From d74d51190a523d20775bf448eee408935d346e8b Mon Sep 17 00:00:00 2001 From: Samson <16504129+sagudev@users.noreply.github.com> Date: Sat, 30 Sep 2023 18:28:46 +0200 Subject: [PATCH] Update WebGPU CTS (#30454) * Fix webgpu-cts import script * Update webgpu-cts to https://github.com/gpuweb/cts/commit/f2b59e03621238d0d0fd6305be2c406ce3e45ac2 * Updated expectations --- python/servo/testing_commands.py | 2 + tests/wpt/webgpu/meta/MANIFEST.json | 2074 +- .../wpt/webgpu/meta/webgpu/cts.https.html.ini | 121002 ++++++++++++++- tests/wpt/webgpu/tests/checkout_commit.txt | 2 +- .../tests/webgpu/common/framework/fixture.js | 7 + .../tests/webgpu/common/framework/metadata.js | 16 + .../webgpu/common/framework/params_builder.js | 149 +- .../webgpu/common/framework/test_config.js | 1 + .../webgpu/common/internal/file_loader.js | 14 +- .../internal/logging/test_case_recorder.js | 12 +- .../webgpu/common/internal/params_utils.js | 23 +- .../common/internal/query/json_param_value.js | 13 +- .../webgpu/common/internal/test_group.js | 158 +- .../tests/webgpu/common/internal/tree.js | 92 +- .../tests/webgpu/common/internal/version.js | 2 +- .../common/internal/websocket_logger.js | 52 + .../webgpu/common/runtime/helper/options.js | 80 + .../runtime/helper/test_worker-worker.js | 18 +- .../common/runtime/helper/test_worker.js | 10 +- .../webgpu/tests/webgpu/common/runtime/wpt.js | 2 +- .../tests/webgpu/common/util/data_tables.js | 78 + .../tests/webgpu/common/util/navigator_gpu.js | 6 +- .../webgpu/tests/webgpu/common/util/util.js | 74 + tests/wpt/webgpu/tests/webgpu/cts.https.html | 370 +- .../operation/adapter/requestDevice.spec.js | 31 +- .../copyTextureToTexture.spec.js | 126 +- .../command_buffer/image_copy.spec.js | 460 +- .../api/operation/compute/basic.spec.js | 40 +- .../api/operation/render_pass/storeOp.spec.js | 3 + .../pipeline_output_targets.spec.js | 36 +- .../render_pipeline/sample_mask.spec.js | 3 + .../rendering/color_target_state.spec.js | 3 + .../api/operation/rendering/draw.spec.js | 33 +- .../resource_init/texture_zero.spec.js | 1 + .../operation/sampling/filter_mode.spec.js | 1144 +- .../format_reinterpretation.spec.js | 8 + .../vertex_state/correctness.spec.js | 150 +- .../api/validation/buffer/create.spec.js | 16 +- .../capability_checks/limits/limit_utils.js | 30 +- .../limits/maxColorAttachments.spec.js | 15 +- .../maxComputeInvocationsPerWorkgroup.spec.js | 18 +- ...micStorageBuffersPerPipelineLayout.spec.js | 1 + ...micUniformBuffersPerPipelineLayout.spec.js | 1 + .../maxInterStageShaderComponents.spec.js | 5 + .../maxStorageBufferBindingSize.spec.js | 4 +- .../maxUniformBufferBindingSize.spec.js | 9 +- .../api/validation/createBindGroup.spec.js | 114 +- .../validation/createBindGroupLayout.spec.js | 35 +- .../validation/createPipelineLayout.spec.js | 26 +- .../api/validation/createTexture.spec.js | 585 +- .../webgpu/api/validation/createView.spec.js | 11 + .../encoding/cmds/compute_pass.spec.js | 19 +- .../cmds/copyTextureToTexture.spec.js | 3 + .../cmds/render/setVertexBuffer.spec.js | 17 +- .../encoding/cmds/setBindGroup.spec.js | 46 +- .../createRenderBundleEncoder.spec.js | 38 +- .../gpu_external_texture_expiration.spec.js | 56 +- .../image_copy/buffer_related.spec.js | 1 + .../api/validation/image_copy/image_copy.js | 11 + .../image_copy/layout_related.spec.js | 4 + .../image_copy/texture_related.spec.js | 3 + .../CopyExternalImageToTexture.spec.js | 1 + .../attachment_compatibility.spec.js | 32 +- .../render_pass_descriptor.spec.js | 53 +- .../depth_stencil_state.spec.js | 1 + .../render_pipeline/fragment_state.spec.js | 54 +- .../render_pipeline/multisample_state.spec.js | 4 + .../render_pipeline/vertex_state.spec.js | 331 +- .../texture/in_pass_encoder.spec.js | 11 + .../state/device_lost/destroy.spec.js | 267 +- .../tests/webgpu/webgpu/capability_info.js | 175 +- .../encoding/cmds/copyTextureToBuffer.spec.js | 45 + .../pipeline_bind_group_compat.spec.js | 391 + .../render_pipeline/fragment_state.spec.js | 127 + .../render_pipeline/shader_module.spec.js | 73 + .../render_pipeline/vertex_state.spec.js | 92 + .../validation/texture/createTexture.spec.js | 42 + .../api/validation/texture/cubeArray.spec.js | 27 + .../webgpu/compat/compatibility_test.js | 11 + .../webgpu/tests/webgpu/webgpu/format_info.js | 43 + .../webgpu/tests/webgpu/webgpu/gpu_test.js | 393 +- .../wpt/webgpu/tests/webgpu/webgpu/listing.js | 683 +- .../expression/binary/af_addition.spec.js | 153 + .../expression/binary/af_comparison.spec.js | 205 + .../binary/af_matrix_addition.spec.js | 62 + .../binary/af_matrix_subtraction.spec.js | 62 + .../binary/af_multiplication.spec.js | 153 + .../expression/binary/af_subtraction.spec.js | 153 + .../execution/expression/binary/binary.js | 10 +- .../expression/binary/f16_addition.spec.js | 216 + .../expression/binary/f16_division.spec.js | 216 + .../binary/f16_matrix_addition.spec.js | 98 + .../f16_matrix_matrix_multiplication.spec.js | 117 + .../f16_matrix_scalar_multiplication.spec.js | 156 + .../binary/f16_matrix_subtraction.spec.js | 98 + .../f16_matrix_vector_multiplication.spec.js | 154 + .../binary/f16_multiplication.spec.js | 216 + .../expression/binary/f16_remainder.spec.js | 217 + .../expression/binary/f16_subtraction.spec.js | 216 + .../expression/binary/f32_addition.spec.js | 186 +- .../expression/binary/f32_division.spec.js | 178 +- .../binary/f32_matrix_addition.spec.js | 165 +- .../f32_matrix_matrix_multiplication.spec.js | 455 +- .../f32_matrix_scalar_multiplication.spec.js | 326 +- .../binary/f32_matrix_subtraction.spec.js | 165 +- .../f32_matrix_vector_multiplication.spec.js | 342 +- .../binary/f32_multiplication.spec.js | 178 +- .../expression/binary/f32_remainder.spec.js | 178 +- .../expression/binary/f32_subtraction.spec.js | 178 +- .../expression/call/builtin/abs.spec.js | 43 +- .../expression/call/builtin/acos.spec.js | 29 +- .../expression/call/builtin/acosh.spec.js | 29 +- .../call/builtin/arrayLength.spec.js | 55 +- .../expression/call/builtin/asin.spec.js | 29 +- .../expression/call/builtin/asinh.spec.js | 15 +- .../expression/call/builtin/atan.spec.js | 36 +- .../expression/call/builtin/atan2.spec.js | 31 +- .../expression/call/builtin/atanh.spec.js | 32 +- .../call/builtin/atomics/atomicAdd.spec.js | 8 +- .../call/builtin/atomics/atomicAnd.spec.js | 16 +- .../atomics/atomicCompareExchangeWeak.spec.js | 718 +- .../builtin/atomics/atomicExchange.spec.js | 457 +- .../call/builtin/atomics/atomicLoad.spec.js | 177 +- .../call/builtin/atomics/atomicMax.spec.js | 8 +- .../call/builtin/atomics/atomicMin.spec.js | 12 +- .../call/builtin/atomics/atomicOr.spec.js | 16 +- .../call/builtin/atomics/atomicStore.spec.js | 287 +- .../call/builtin/atomics/atomicSub.spec.js | 8 +- .../call/builtin/atomics/atomicXor.spec.js | 16 +- .../call/builtin/atomics/harness.js | 25 +- .../expression/call/builtin/bitcast.spec.js | 1091 +- .../expression/call/builtin/builtin.js | 21 +- .../expression/call/builtin/ceil.spec.js | 36 +- .../expression/call/builtin/clamp.spec.js | 174 +- .../expression/call/builtin/cos.spec.js | 25 +- .../expression/call/builtin/cosh.spec.js | 18 +- .../expression/call/builtin/cross.spec.js | 61 +- .../expression/call/builtin/degrees.spec.js | 49 +- .../call/builtin/determinant.spec.js | 94 +- .../expression/call/builtin/distance.spec.js | 173 +- .../expression/call/builtin/dot.spec.js | 141 +- .../expression/call/builtin/exp.spec.js | 32 +- .../expression/call/builtin/exp2.spec.js | 32 +- .../call/builtin/faceForward.spec.js | 172 +- .../call/builtin/firstLeadingBit.spec.js | 3 + .../expression/call/builtin/floor.spec.js | 36 +- .../expression/call/builtin/fma.spec.js | 59 +- .../expression/call/builtin/fract.spec.js | 37 +- .../expression/call/builtin/frexp.spec.js | 200 +- .../call/builtin/inversesqrt.spec.js | 23 +- .../expression/call/builtin/ldexp.spec.js | 79 +- .../expression/call/builtin/length.spec.js | 127 +- .../expression/call/builtin/log.spec.js | 31 +- .../expression/call/builtin/log2.spec.js | 31 +- .../expression/call/builtin/max.spec.js | 56 +- .../expression/call/builtin/min.spec.js | 56 +- .../expression/call/builtin/mix.spec.js | 230 +- .../expression/call/builtin/modf.spec.js | 391 +- .../expression/call/builtin/normalize.spec.js | 127 +- .../expression/call/builtin/pow.spec.js | 28 +- .../call/builtin/quantizeToF16.spec.js | 16 +- .../expression/call/builtin/radians.spec.js | 46 +- .../expression/call/builtin/reflect.spec.js | 156 +- .../expression/call/builtin/refract.spec.js | 171 +- .../expression/call/builtin/round.spec.js | 33 +- .../expression/call/builtin/saturate.spec.js | 59 +- .../expression/call/builtin/select.spec.js | 20 +- .../expression/call/builtin/sign.spec.js | 15 +- .../expression/call/builtin/sin.spec.js | 24 +- .../expression/call/builtin/sinh.spec.js | 18 +- .../call/builtin/smoothstep.spec.js | 30 +- .../expression/call/builtin/sqrt.spec.js | 18 +- .../expression/call/builtin/step.spec.js | 72 +- .../expression/call/builtin/tan.spec.js | 24 +- .../expression/call/builtin/tanh.spec.js | 15 +- .../expression/call/builtin/transpose.spec.js | 231 +- .../expression/call/builtin/trunc.spec.js | 35 +- .../shader/execution/expression/case_cache.js | 3 +- .../shader/execution/expression/expression.js | 422 +- .../unary/abstract_float_assignment.spec.js | 59 - .../expression/unary/af_arithmetic.spec.js | 42 + .../expression/unary/af_assignment.spec.js | 117 + .../expression/unary/bool_conversion.spec.js | 24 +- .../expression/unary/f16_arithmetic.spec.js | 43 + .../expression/unary/f16_conversion.spec.js | 288 + .../expression/unary/f32_conversion.spec.js | 214 +- .../expression/unary/i32_conversion.spec.js | 44 +- .../expression/unary/u32_conversion.spec.js | 44 +- .../execution/expression/unary/unary.js | 9 +- .../shader/execution/robust_access.spec.js | 40 +- .../webgpu/shader/execution/zero_init.spec.js | 30 +- .../tests/webgpu/webgpu/shader/types.js | 67 +- .../const_assert/const_assert.spec.js | 165 +- .../shader/validation/decl/const.spec.js | 62 + .../shader/validation/decl/override.spec.js | 32 + .../validation/decl/ptr_spelling.spec.js | 150 + .../webgpu/shader/validation/decl/util.js | 132 + .../validation/decl/var_access_mode.spec.js | 114 + .../expression/access/vector.spec.js | 224 + .../expression/call/builtin/abs.spec.js | 55 + .../expression/call/builtin/acos.spec.js | 79 + .../expression/call/builtin/acosh.spec.js | 81 + .../expression/call/builtin/asin.spec.js | 79 + .../expression/call/builtin/asinh.spec.js | 83 + .../expression/call/builtin/atan.spec.js | 82 + .../expression/call/builtin/atan2.spec.js | 108 + .../expression/call/builtin/atanh.spec.js | 79 + .../expression/call/builtin/bitcast.spec.js | 286 + .../expression/call/builtin/ceil.spec.js | 76 + .../expression/call/builtin/clamp.spec.js | 58 + .../call/builtin/const_override_validation.js | 177 + .../expression/call/builtin/cos.spec.js | 78 + .../expression/call/builtin/cosh.spec.js | 79 + .../expression/call/builtin/degrees.spec.js | 79 + .../expression/call/builtin/exp.spec.js | 103 + .../expression/call/builtin/exp2.spec.js | 103 + .../call/builtin/inverseSqrt.spec.js | 82 + .../expression/call/builtin/length.spec.js | 205 + .../expression/call/builtin/log.spec.js | 77 + .../expression/call/builtin/log2.spec.js | 77 + .../expression/call/builtin/modf.spec.js | 77 + .../expression/call/builtin/radians.spec.js | 77 + .../expression/call/builtin/round.spec.js | 85 + .../expression/call/builtin/saturate.spec.js | 77 + .../expression/call/builtin/sign.spec.js | 80 + .../expression/call/builtin/sin.spec.js | 78 + .../expression/call/builtin/sinh.spec.js | 79 + .../expression/call/builtin/sqrt.spec.js | 82 + .../expression/call/builtin/tan.spec.js | 82 + .../functions/alias_analysis.spec.js | 196 + .../validation/functions/restrictions.spec.js | 729 + .../validation/parse/diagnostic.spec.js | 201 + .../validation/parse/identifiers.spec.js | 125 +- .../shader/validation/parse/literal.spec.js | 4 +- .../shader/validation/parse/must_use.spec.js | 266 + .../validation/parse/var_and_let.spec.js | 34 + .../validation/resource_interface/util.js | 88 - .../validation/shader_io/binding.spec.js | 141 + .../shader/validation/shader_io/group.spec.js | 141 + .../group_and_binding.spec.js} | 104 +- .../shader/validation/shader_io/id.spec.js | 171 + .../validation/shader_io/interpolate.spec.js | 73 + .../validation/shader_io/invariant.spec.js | 93 +- .../validation/shader_io/locations.spec.js | 123 + .../shader/validation/shader_io/size.spec.js | 213 + .../shader/validation/shader_io/util.js | 115 + .../shader_io/workgroup_size.spec.js | 301 + .../validation/shader_validation_test.js | 95 +- .../shader/validation/types/alias.spec.js | 124 + .../shader/validation/types/struct.spec.js | 100 + .../shader/validation/types/vector.spec.js | 79 + .../validation/uniformity/uniformity.spec.js | 2088 + .../tests/webgpu/webgpu/util/constants.js | 378 +- .../tests/webgpu/webgpu/util/conversion.js | 362 +- .../tests/webgpu/webgpu/util/device_pool.js | 11 +- .../webgpu/webgpu/util/floating_point.js | 1304 +- .../webgpu/tests/webgpu/webgpu/util/math.js | 681 +- .../webgpu/tests/webgpu/webgpu/util/prng.js | 123 + .../tests/webgpu/webgpu/util/texture/base.js | 24 + .../webgpu/webgpu/util/texture/texel_data.js | 99 +- .../webgpu/util/texture/texel_data.spec.js | 3 + .../webgpu/webgpu/util/texture/texel_view.js | 39 + .../webgpu/webgpu/util/texture/texture_ok.js | 16 +- .../web_platform/canvas/configure.spec.js | 3 + .../copyToTexture/ImageBitmap.spec.js | 121 +- .../copyToTexture/ImageData.spec.js | 222 + .../web_platform/copyToTexture/canvas.spec.js | 13 + .../web_platform/copyToTexture/image.spec.js | 272 + .../webgpu/web_platform/copyToTexture/util.js | 49 + .../web_platform/copyToTexture/video.spec.js | 39 +- .../tests/webgpu/webgpu/web_platform/util.js | 2 +- 271 files changed, 147919 insertions(+), 8349 deletions(-) create mode 100644 tests/wpt/webgpu/tests/webgpu/common/framework/metadata.js create mode 100644 tests/wpt/webgpu/tests/webgpu/common/internal/websocket_logger.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/cmds/copyTextureToBuffer.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/fragment_state.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/shader_module.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/vertex_state.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/createTexture.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/cubeArray.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/compat/compatibility_test.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_addition.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_comparison.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_addition.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_subtraction.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_multiplication.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_subtraction.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_addition.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_division.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_addition.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_matrix_multiplication.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_scalar_multiplication.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_subtraction.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_vector_multiplication.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_multiplication.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_remainder.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_subtraction.spec.js delete mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/abstract_float_assignment.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_arithmetic.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_assignment.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_arithmetic.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_conversion.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/const.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/override.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/ptr_spelling.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/util.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/var_access_mode.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/access/vector.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/abs.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acos.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acosh.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asin.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asinh.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan2.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atanh.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/bitcast.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/ceil.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/clamp.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/const_override_validation.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cos.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cosh.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/degrees.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp2.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/inverseSqrt.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/length.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log2.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/modf.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/radians.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/round.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/saturate.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sign.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sin.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sinh.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sqrt.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/tan.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/alias_analysis.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/restrictions.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/diagnostic.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/must_use.spec.js delete mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/util.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/binding.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group.spec.js rename tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/{resource_interface/bindings.spec.js => shader_io/group_and_binding.spec.js} (69%) create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/id.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/size.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/workgroup_size.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/alias.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/struct.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/vector.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/util/prng.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageData.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/image.spec.js create mode 100644 tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/util.js diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index a0e60cb2e72..b31ed9c7be5 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -782,6 +782,8 @@ tests/wpt/mozilla/tests for Servo-only tests""" % reference_path) res = call(["npm", "run", "wpt"], cwd=clone_dir) if res != 0: return res + # https://github.com/gpuweb/cts/pull/2770 + delete(path.join(clone_dir, "out-wpt", "cts-chunked2sec.https.html")) cts_html = path.join(clone_dir, "out-wpt", "cts.https.html") # patch with open(cts_html, 'r') as file: diff --git a/tests/wpt/webgpu/meta/MANIFEST.json b/tests/wpt/webgpu/meta/MANIFEST.json index a5d685a6e16..9b8e75c9351 100644 --- a/tests/wpt/webgpu/meta/MANIFEST.json +++ b/tests/wpt/webgpu/meta/MANIFEST.json @@ -470,7 +470,7 @@ [] ], "checkout_commit.txt": [ - "ede5c184cdc42d0374d6e712f49f86313747cfea", + "5507b2d47d31f13e63856fe50004afbed478abb1", [] ], "webgpu": { @@ -481,11 +481,15 @@ [] ], "fixture.js": [ - "1e5f129e6a4c57a38082f9959279d2552d669361", + "34ea469708f8d060ec81f413e69738b2318b4e38", + [] + ], + "metadata.js": [ + "daa8b4dbca1e5ef62bbbfcc234a9d9c6afcd0d15", [] ], "params_builder.js": [ - "787911f9649c34e84827fb5fc4cd3fe399d95ba0", + "63c6431fd2b478c0ced00691bc6fcf69a3a01e60", [] ], "resources.js": [ @@ -493,7 +497,7 @@ [] ], "test_config.js": [ - "de016471cd2051c8f8348d822e7e2ef41fe431e6", + "c9806c7b6c1e114a5e42112b805a793eb5e57aa8", [] ], "test_group.js": [ @@ -503,7 +507,7 @@ }, "internal": { "file_loader.js": [ - "6a74dddf789063b2131d40189a6b0debc747afec", + "2420782e78b99f0bbdcdfe746c163b35e9760f8a", [] ], "logging": { @@ -520,12 +524,12 @@ [] ], "test_case_recorder.js": [ - "3d60563cfb2b8a6d5d0c3b484b249823b273f581", + "8ca5c0d4d64ca51c6bab1468a392be69d3face5a", [] ] }, "params_utils.js": [ - "85bb6dbe806101c9630d5efb34c43596f28afbb0", + "85b002c16ceeb152d42bb018ff3cb07e9f3b755f", [] ], "query": { @@ -538,7 +542,7 @@ [] ], "json_param_value.js": [ - "ddc0994e5707c844e3bef1e85ca2f3926a03e979", + "1044a5520375670f4bcd3780ac9a37370b1015c3", [] ], "parseQuery.js": [ @@ -567,7 +571,7 @@ [] ], "test_group.js": [ - "d9c632a47ff47dd2b54209f6854e8a0908212ac8", + "b836c78c6127ed77a8c1a3bc51885ab08ba29d96", [] ], "test_suite_listing.js": [ @@ -575,7 +579,7 @@ [] ], "tree.js": [ - "9c2bf8cb114208df0fa9c7ebc6e64b392baec4bd", + "0299f35493243d53f9a92636d6e04b992e4202ea", [] ], "util.js": [ @@ -583,27 +587,31 @@ [] ], "version.js": [ - "2d205096c7caabd861a59a3ccd8c6b82fffe6044", + "0cbad1c61d28a7e7260b3d32da4ab55431b4d1e8", + [] + ], + "websocket_logger.js": [ + "1f60801f5c6dc114d58d7e8f7969082f03b815b7", [] ] }, "runtime": { "helper": { "options.js": [ - "946c0bdc11945b4e36315821af5375289f1d9156", + "953c3280fd42888e5349970841db0d43c4e92b9b", [] ], "test_worker-worker.js": [ - "5b490252fdf58deb9e22560164ad247cc5273345", + "e8b40222a51b7c26beac37929c4409463cacd0a4", [] ], "test_worker.js": [ - "c56339ab97e84f726593c1b8c7dbb4d8b7ba383d", + "092d4ee88bc1b1c325dcad5b61f08832927481f9", [] ] }, "wpt.js": [ - "90294223c098baef73e68c63f1cc5f9700276ffb", + "a66f852194d6033a8834dbe96f04ce19f39297ba", [] ] }, @@ -617,11 +625,11 @@ [] ], "data_tables.js": [ - "c5d21d400174bb34259dac1ed4b526ff2f59fcb3", + "f2c9176ff4da1243839281118a7e9c263ae556b0", [] ], "navigator_gpu.js": [ - "c37c2bc36a9a4c57a89e98e3fead17a937e1140a", + "63b432b4ebefc47ea948a219ded7261b150d50ac", [] ], "preprocessor.js": [ @@ -637,7 +645,7 @@ [] ], "util.js": [ - "86e14af06e000a6abd772fe0d2c019dab275c8ef", + "248fc2cc35f405cb3a547e19e3a5e934dd618b72", [] ], "wpt_reftest_wait.js": [ @@ -719,7 +727,7 @@ [] ], "requestDevice.spec.js": [ - "3472603c8de281988668d07a755f3c8e18ec608f", + "73c5218507e324a2829e1d2af42b5f92230d545f", [] ] }, @@ -763,11 +771,11 @@ [] ], "copyTextureToTexture.spec.js": [ - "1b42190334f2cc1ce783828857379c7e33e8d53a", + "a85ee333b106039987adf3814ae7dd18682a103d", [] ], "image_copy.spec.js": [ - "bb5eda5d90c5df6c6c2b78f2121c8ff414c78c71", + "fa391eac04b6d957ef16ab48cfad69c0acc5a9ce", [] ], "programmable": { @@ -799,7 +807,7 @@ }, "compute": { "basic.spec.js": [ - "a8859e6845d6dd4d68c3bd0eca5fbb3c28f0dc7f", + "2e5b1279001f422049caaad06433bdf03cd64111", [] ] }, @@ -883,7 +891,7 @@ [] ], "storeOp.spec.js": [ - "f50a0a05902c931e3d5a014ac9578c9ee8f75995", + "9dc3c27f58048c2918f6eb2d7ded591dffab14d8", [] ], "storeop2.spec.js": [ @@ -901,7 +909,7 @@ [] ], "pipeline_output_targets.spec.js": [ - "e28bcdb72008d7bc4b432c27f703b76768c2628f", + "3b124b09e77cf1582f7f44d9cf235898725df309", [] ], "primitive_topology.spec.js": [ @@ -909,7 +917,7 @@ [] ], "sample_mask.spec.js": [ - "7ceffee00ee752b53dad3b7aa44bdf094db8edcd", + "f1f45e98143ec71bfd300d40e3ebbeb8dac16ab6", [] ], "vertex_only_render_pipeline.spec.js": [ @@ -923,7 +931,7 @@ [] ], "color_target_state.spec.js": [ - "4c648d1c1e9739af25cc3ed26c144b8621884018", + "6e55f623da7dad31bbaa1ddf674da96b811311a0", [] ], "depth.spec.js": [ @@ -939,7 +947,7 @@ [] ], "draw.spec.js": [ - "e565f78fd8e568ca66b075865bf980c1f0cb6324", + "489975f63f2f3ebbe71cc2cdc5b3626b2a7cdfc7", [] ], "indirect_draw.spec.js": [ @@ -975,7 +983,7 @@ ] }, "texture_zero.spec.js": [ - "33a0d49d31dd8bca4263bb77cdacf1da5c7942cd", + "b2a4c0d2b77a914471ebdffd97c30a5f41911363", [] ] }, @@ -985,7 +993,7 @@ [] ], "filter_mode.spec.js": [ - "e67e308f1819a2b4b1ba80312ee841957ab15ec3", + "f9501fc629fd1d65efb6c649237b3f77301ed608", [] ], "lod_clamp.spec.js": [ @@ -1001,7 +1009,7 @@ }, "texture_view": { "format_reinterpretation.spec.js": [ - "69c4dd68e3c0e45faf2e1f2c0370db7266ecb84e", + "b4af4f28fd7741831e9a0f2d99f6e28eae1e0aba", [] ], "read.spec.js": [ @@ -1019,7 +1027,7 @@ ], "vertex_state": { "correctness.spec.js": [ - "0d6ffc853efacfd55afcec787250f4fa327ac7cc", + "4b54604e1aeec65aa6792674d05ca03cd0f73fff", [] ], "index_format.spec.js": [ @@ -1031,7 +1039,7 @@ "validation": { "buffer": { "create.spec.js": [ - "c8a39346edf52cba008407921fa9d44c7c7bfdf4", + "0a5a695097e37627ee7c0ee2400c54f23cb0b65d", [] ], "destroy.spec.js": [ @@ -1060,7 +1068,7 @@ }, "limits": { "limit_utils.js": [ - "56c58f43d79518db73d5d722cf240fab80140c58", + "350cb07a753081e40ca6318bd3c74170282c1c10", [] ], "maxBindGroups.spec.js": [ @@ -1080,11 +1088,11 @@ [] ], "maxColorAttachments.spec.js": [ - "38520d8394496346b1c8a8ee751b26beea4f861d", + "7c291765f80a9df996569cc8d6c8c9651310b86a", [] ], "maxComputeInvocationsPerWorkgroup.spec.js": [ - "68f19bd17eccfa98f59e7c213a45d78e680a4457", + "e68ebf49a0abf3f0a2990ef9827a959dc56c9776", [] ], "maxComputeWorkgroupSizeX.spec.js": [ @@ -1108,15 +1116,15 @@ [] ], "maxDynamicStorageBuffersPerPipelineLayout.spec.js": [ - "4b2eb04ae29c494d1ca5421ed1bd4792741e0f55", + "db8491c888cc0e53d9f66d8a4522b709ef1fe5ac", [] ], "maxDynamicUniformBuffersPerPipelineLayout.spec.js": [ - "81d7350ab537dc8bfc5ef60a595a3ab55127d824", + "546a3e1c95531ea40383b43d94b01c02de4a04fb", [] ], "maxInterStageShaderComponents.spec.js": [ - "a8c3bb219d67bcdf8cc82edf264b1ea2b184ce1d", + "d156fc326c564a938749866dd38530ff88802b1a", [] ], "maxInterStageShaderVariables.spec.js": [ @@ -1132,7 +1140,7 @@ [] ], "maxStorageBufferBindingSize.spec.js": [ - "836b54827a61d818a5414eee4bc24cebf063f673", + "b49ba5747c306e5e6bf5a39135093a16d61659ad", [] ], "maxStorageBuffersPerShaderStage.spec.js": [ @@ -1160,7 +1168,7 @@ [] ], "maxUniformBufferBindingSize.spec.js": [ - "af7634f04cfd0bc738215cab47ab2cfac9ea651b", + "f8c2bfe9871987f4816562831e88094d311ae155", [] ], "maxUniformBuffersPerShaderStage.spec.js": [ @@ -1194,15 +1202,15 @@ [] ], "createBindGroup.spec.js": [ - "0a6f32322ead65fa335ae6380aa361f9ac7450de", + "ba0ea041c233f8fbdac62817a70f3948dc3b6e71", [] ], "createBindGroupLayout.spec.js": [ - "1693e7646a4c2bbaebd83920481217371a41bf82", + "5c9994833ae847ade4accef1411ba1f6f2b243d7", [] ], "createPipelineLayout.spec.js": [ - "4e08be8513ac9ee5ee45f2f10e69b62c01a74b8a", + "507d14c0d831acc60022998a1efac165e26e69a0", [] ], "createSampler.spec.js": [ @@ -1210,11 +1218,11 @@ [] ], "createTexture.spec.js": [ - "baf9a655d76c2ea1d584199aa75d79eef4323626", + "b89f528d9a5c8e8a937e641d4606132c358ed6b4", [] ], "createView.spec.js": [ - "696aef1339ab908c4adc92ce8ccc3718e2c624b4", + "5341b2a17fe3cfd5db177a48a933cd4f21848a32", [] ], "debugMarker.spec.js": [ @@ -1236,7 +1244,7 @@ [] ], "compute_pass.spec.js": [ - "042c306786763a2102f57b045dacfc11a3fd7833", + "6ee13bd622feedad9a12f32965158fcae01fb0bd", [] ], "copyBufferToBuffer.spec.js": [ @@ -1244,7 +1252,7 @@ [] ], "copyTextureToTexture.spec.js": [ - "845c871a216c8959f566c7c2d86268611e2758ef", + "2cd97907bcccb0583bb9596ed7a9fce5b743c414", [] ], "debug.spec.js": [ @@ -1281,7 +1289,7 @@ [] ], "setVertexBuffer.spec.js": [ - "3c3055d53016becfbfdb44507d6113ddc1af2ced", + "7d4151e956ac143af67f9593b90f530714168c3c", [] ], "state_tracking.spec.js": [ @@ -1294,12 +1302,12 @@ [] ], "setBindGroup.spec.js": [ - "ebf36911298e9d41e5763ba7f053649c9fed1f67", + "a9bd6fa2e8a6ed5b3e4517f67c3cfa85ee14a7c2", [] ] }, "createRenderBundleEncoder.spec.js": [ - "1c9c9ad1d4b8284a1c56bcd63507acdf2037a6a0", + "8849619ffef876c3edc6baa51b30c151acf96264", [] ], "encoder_open_state.spec.js": [ @@ -1352,12 +1360,12 @@ [] ], "gpu_external_texture_expiration.spec.js": [ - "a9dbd9018c272cebab73c83ce912531a42e5c1fb", + "39f26111baf983fd66d0c27add63ca10e7097185", [] ], "image_copy": { "buffer_related.spec.js": [ - "23e98336bfd3d529198cbbfa8c5537d479635399", + "9cd4f423aaca2d82089f08e0f0fd21fa61103822", [] ], "buffer_texture_copies.spec.js": [ @@ -1365,15 +1373,15 @@ [] ], "image_copy.js": [ - "b1c3bd753770ccb2c1f4ddc71909bf74a5783e29", + "0e2167c1b15558f5d690abaabfda59e91ffb0baf", [] ], "layout_related.spec.js": [ - "6ec70eb1523a6b4dcf997f60c2d960bdcb61af9d", + "4f0e2810cc3e2a392a406439c3ba8c5fe117bdd0", [] ], "texture_related.spec.js": [ - "d2d1b64eea2e978b5021b8e322c063c39b15a763", + "99365a1c582f69906be6c8ab97101877e4fdf66b", [] ] }, @@ -1398,7 +1406,7 @@ ], "copyToTexture": { "CopyExternalImageToTexture.spec.js": [ - "b1531c0950d6b593ce004680c8dd2024dc3052d3", + "20f26672d18382be94e4f4bc2735921000027391", [] ] }, @@ -1431,11 +1439,11 @@ }, "render_pass": { "attachment_compatibility.spec.js": [ - "d12fbfb463477bc69422d75fc67bcdbbac44fbd2", + "76cb0b23611b4bb6597cc44b9bd41b8e86117d6c", [] ], "render_pass_descriptor.spec.js": [ - "81501a388abf51e1759d9626d61531ffce3bbef5", + "123b97cf2b1cc53043387fbff971c220c4c5918d", [] ], "resolve.spec.js": [ @@ -1449,11 +1457,11 @@ [] ], "depth_stencil_state.spec.js": [ - "bfb1a1696c35c40203fadde796eb44459ba0b496", + "d526b2f18011f66b632562f5fa7a808db5865436", [] ], "fragment_state.spec.js": [ - "ade2ebecee728425b3d013431105a68869b2fd2d", + "76f044e97d58fa1d3b5837c75a7b91b946dce70c", [] ], "inter_stage.spec.js": [ @@ -1465,7 +1473,7 @@ [] ], "multisample_state.spec.js": [ - "cdf20468315d28526dbf3f84518037938cba8c81", + "b9434ec07ac16a4067fe919a2a8e4cdf55ba7a14", [] ], "overrides.spec.js": [ @@ -1481,7 +1489,7 @@ [] ], "vertex_state.spec.js": [ - "fe735f042f8addcc11148ddfd8a3c5b3c23b7af8", + "852f39febd47e32147ffe50df819774921228662", [] ] }, @@ -1498,7 +1506,7 @@ }, "texture": { "in_pass_encoder.spec.js": [ - "6c6588259f1d07b93630ae9e4c9fb1a160e0de81", + "10c74b800614aa93d0b10e8df48731b2471b969f", [] ], "in_render_common.spec.js": [ @@ -1524,7 +1532,7 @@ "state": { "device_lost": { "destroy.spec.js": [ - "0029128d03ad0e3a73f5ab05d86503db416e6195", + "b7708dd89d743ee5bd0f49333991ecb7ed8eeae6", [] ] } @@ -1554,9 +1562,57 @@ } }, "capability_info.js": [ - "681128f34eb8936ea846ff9e611154e56fe41b47", + "e84705448722125266f3d71eab0c983bd269793e", [] ], + "compat": { + "api": { + "validation": { + "encoding": { + "cmds": { + "copyTextureToBuffer.spec.js": [ + "b2d8d247177ae35144f4dd2f55662957276e4dd1", + [] + ] + }, + "programmable": { + "pipeline_bind_group_compat.spec.js": [ + "33952b9e53b38c43d13e472cf1dc1ba38938d86f", + [] + ] + } + }, + "render_pipeline": { + "fragment_state.spec.js": [ + "b3c79f67528544a8cb80e2cbd81ff3c74b89c48b", + [] + ], + "shader_module.spec.js": [ + "b20e11b3ae4d9c04e793447c9b1085d24ed15d52", + [] + ], + "vertex_state.spec.js": [ + "c1c12910812a113fd2bd537269089bfe4cdb6e89", + [] + ] + }, + "texture": { + "createTexture.spec.js": [ + "9104a4293fafe309a97ad72ab367cb6dec816c81", + [] + ], + "cubeArray.spec.js": [ + "9222c336c0f905c1d2aa38e2c57307be8e44b8da", + [] + ] + } + } + }, + "compatibility_test.js": [ + "f611626d4f0cd29ad2d5f02f2863169fb065ad94", + [] + ] + }, "constants.js": [ "ff512c3f6bcf43b2d095c7d0066e175fe41a70e5", [] @@ -1566,11 +1622,11 @@ [] ], "format_info.js": [ - "5aebecddba99376dccdd86ccb0bd6b4dac17cad1", + "5a69d983b900d9711989950730d76ce48a295c8b", [] ], "gpu_test.js": [ - "b9d5c28d762cd056588c27adfe37e757b0b086b5", + "003552c545913c7edff0a731d994b432bc9057cb", [] ], "idl": { @@ -1590,15 +1646,39 @@ ] }, "listing.js": [ - "4cb0337621f7b751e454137454472275fcedb86a", + "e0dbc7a51f83393b46948936f94dc9814e341bb9", [] ], "shader": { "execution": { "expression": { "binary": { + "af_addition.spec.js": [ + "7fa06b47e4faaf725ecbd41b633cc0dcc4e6ee10", + [] + ], + "af_comparison.spec.js": [ + "1d3e2a3314b9660a471e3b98d7448b45b491f1a1", + [] + ], + "af_matrix_addition.spec.js": [ + "420ec0361f229970e4921f12b2aa325c525d1d7b", + [] + ], + "af_matrix_subtraction.spec.js": [ + "9cd5a1fe53314dd40dcaa221944a82660a730a31", + [] + ], + "af_multiplication.spec.js": [ + "314f1aa96d7e6dc1bba1087048ed0cf38fe0706c", + [] + ], + "af_subtraction.spec.js": [ + "d202c3c4dc923cf64e1a1a6f3afe686e65a5fdb0", + [] + ], "binary.js": [ - "0ed7318f8bae46011db2ec295bea308a58381ef3", + "a9a6bd2733c43200a81fc0f0a564686ba357fbdc", [] ], "bitwise.spec.js": [ @@ -1613,12 +1693,52 @@ "4dc5ebe3cc375ed2c399acf05129f984a958ab3f", [] ], + "f16_addition.spec.js": [ + "73d9dba092e8a4355a59225923267fec3daa7aba", + [] + ], "f16_comparison.spec.js": [ "e1a8d983ece19ceb5345b9ade9cbfa8325e6378b", [] ], + "f16_division.spec.js": [ + "e10519dfe7f10b49c2f266a78ef97c8a4c1bc07a", + [] + ], + "f16_matrix_addition.spec.js": [ + "1c21bfbdb85df72fc7a2dcb0a8fd96280c96c31a", + [] + ], + "f16_matrix_matrix_multiplication.spec.js": [ + "2e9c94d0aac168a1d68e3d590238815d538d9709", + [] + ], + "f16_matrix_scalar_multiplication.spec.js": [ + "8c111ab4ed3e4da00e8f95f1360f0982cb5fff52", + [] + ], + "f16_matrix_subtraction.spec.js": [ + "236da564d783813c06ba23905298a1e3e1d07630", + [] + ], + "f16_matrix_vector_multiplication.spec.js": [ + "dcfe2118fc8edd2f31efe25694f95bac9e8ce417", + [] + ], + "f16_multiplication.spec.js": [ + "a6ce77c433b4dc7917c18869eed316ce75cd7b05", + [] + ], + "f16_remainder.spec.js": [ + "31068964f8d68098d3193d751b905c119adfeb2f", + [] + ], + "f16_subtraction.spec.js": [ + "195cf7d7627546b104dffc6fe23e08a244ca6390", + [] + ], "f32_addition.spec.js": [ - "a8ade0fabc708873094dc6ea2eecc9756d4200a8", + "50a134831545b38a128a7687c67a22b01a3e4715", [] ], "f32_comparison.spec.js": [ @@ -1626,39 +1746,39 @@ [] ], "f32_division.spec.js": [ - "7beb7132d741551fbbc2491e23bd3efa0e9803b5", + "9f5d4dc53eabe119b8fbc347b1fa4e247ea58694", [] ], "f32_matrix_addition.spec.js": [ - "f1062c40fd9a0937cbaf3db868f67bd37fa696ba", + "119099de6166c417a57e6299eea5a97ddbd6dd80", [] ], "f32_matrix_matrix_multiplication.spec.js": [ - "67c2d6f9f97c99690473eb3ec562b470c8cc20e1", + "df119808726f2ef8355cc5902a752bbd096f8503", [] ], "f32_matrix_scalar_multiplication.spec.js": [ - "64d2d4af6eb068151cf1acde945bbaccf1c31dd5", + "82edc6eb2b1dfacc195793ef0b655314ff8f62bc", [] ], "f32_matrix_subtraction.spec.js": [ - "992a0b80dba0af0f712cd20c99a4341475fbd3db", + "4a5eb65e6f0cd12d22847048a6b4f475360cfe83", [] ], "f32_matrix_vector_multiplication.spec.js": [ - "50eab8e6f673b7fb451e5f1930a3acc19d6029e5", + "0ec422536dc0d52773a16e906a9e2be34bd10af5", [] ], "f32_multiplication.spec.js": [ - "5ad732f498a77520a269b4f174d3580141e51c86", + "59fb529e66e853b8823ee37fe68cae6a307079d6", [] ], "f32_remainder.spec.js": [ - "eb55aed951c659bc97c4160e1f2da4c6ce73e10a", + "41008bdd2bcf1b24f901bd840d3673d7bc88a839", [] ], "f32_subtraction.spec.js": [ - "3b0142e9394b828937d22eac59d95c1917a0d9f9", + "d6d6ab216f717a41ad5491d7e1d6f80d4ca57c05", [] ], "i32_arithmetic.spec.js": [ @@ -1681,15 +1801,15 @@ "call": { "builtin": { "abs.spec.js": [ - "915a2c16156f757cf5f58c5df9ea35c0c1966653", + "f342db70547445de4abf7086772dcec3a079bab1", [] ], "acos.spec.js": [ - "a438fb2e179611366baf146b016d2a266d16e51e", + "9079adbd9efb7024d46481f96ab78a260f9babb7", [] ], "acosh.spec.js": [ - "d52b8a7a6dc25b721a7ccc1ed2220ab1a91e02fa", + "fe537ba3ce0ff4788934484f1d3a9553c50a0b4f", [] ], "all.spec.js": [ @@ -1701,101 +1821,101 @@ [] ], "arrayLength.spec.js": [ - "09ff436dc531ee1d9ff00f2335f9409878a17646", + "e31fbd832a00c91e44f6a9b62a043458c059dc53", [] ], "asin.spec.js": [ - "02e2383b62927a5c2241cc76ba2e10dd2ead2808", + "0426a9bd423747926c131431faefa880e3f35f49", [] ], "asinh.spec.js": [ - "9dfb7dbfeb620da01f791eb697550babd0c4d21a", + "988abf62b5aa7bed8a0f9a5956dfe641af8eb3d3", [] ], "atan.spec.js": [ - "b2a4f3f8d9f17d8338bc30ff184b30fa75021ed4", + "d14a4a2f82dbf52606fc4d583ca09e0b681b2763", [] ], "atan2.spec.js": [ - "735767f9d90a6d57cb16ac03757a8eb18bd04052", + "185d104062b353bcdc2b31894593a09f008475a1", [] ], "atanh.spec.js": [ - "975717088ace6b0d89c5aea1fc80ed754891f6ab", + "1d74bb11a2cb8bb40c5a3fa0f6c15afa6d7c3d1a", [] ], "atomics": { "atomicAdd.spec.js": [ - "612c95df929d0fe8899205e0b332f44396818c36", + "96287e29989e7615e14a0934a5e54b502de45da0", [] ], "atomicAnd.spec.js": [ - "35ee38c139d759f8041ae011a864282c5050e218", + "e6acf52beeacd6a847c5c52243c65742b0f7f619", [] ], "atomicCompareExchangeWeak.spec.js": [ - "747b14b8329a3e8a0572b428408f9dc5ea0957b8", + "de35fb06c144b1ab0b27d1d7b2b19fe99a723292", [] ], "atomicExchange.spec.js": [ - "c1c347848976d2f9602714d52d6e673b066d0dc4", + "34a9be654e8c2b55506c31871843b73bc65cc758", [] ], "atomicLoad.spec.js": [ - "d2268ad057f31faba4347354fa510f01dd13297e", + "1bcc8bc560142f243c5b4cfbb09d96356890bdda", [] ], "atomicMax.spec.js": [ - "952001610bf25a918cf4a6319c90920dfc407d19", + "74213806fc0b06daece9964b0e0f7de8815f605a", [] ], "atomicMin.spec.js": [ - "cc5928f31b3d35d3b99e52630ad52c9e8f96526c", + "9f898123ae72733b4e3a9d786300cfa720833865", [] ], "atomicOr.spec.js": [ - "f42e61ba9ea4be78edbe4655a374333da2d4db95", + "f707d23b9bf4124724ca98190f8038bbea333970", [] ], "atomicStore.spec.js": [ - "e0edaf81b8911ebbe8a164446a96317b86ee78d3", + "0958a35ef94f36bd8df152925f239769c4f5f6ee", [] ], "atomicSub.spec.js": [ - "ed55959e8e6915e27617bedfc1964f72d0a22f23", + "20847e48d122d9c3e41cec3b13dbb648178352c2", [] ], "atomicXor.spec.js": [ - "f82efdd6d3113a85fee9fb9f8273609fe1d04133", + "7ecb7586e903aef53979bcedba5fabe94df454a1", [] ], "harness.js": [ - "3704be75b7ee62c005bef96d1caee888c19de7de", + "f5f7d83fcf6f3d223362238339dae16230156e11", [] ] }, "bitcast.spec.js": [ - "313a9f42a07b245cc40f1b04ec12bb161c2459dc", + "0165d0121e39c26c4d13360d3f72426112044724", [] ], "builtin.js": [ - "b591217cfadf36dd26b28b1b560fc35613824cfb", + "54b9bcc3f377c6725ed1ea1826d1ca935b4ea950", [] ], "ceil.spec.js": [ - "0182a94962aca24b90d0af35305d17115d904cb5", + "e8d9bedc8dd063e3e6c219e6e1fd70c03d883016", [] ], "clamp.spec.js": [ - "a6c142754585a3f8835b7c6bedc7b6fcc72cd3cd", + "49559fc382b9b585c9e9dee088c1a083e5c3362f", [] ], "cos.spec.js": [ - "902b6f64729b37276adc09b6c8858ebb87c2a2d5", + "c82efe4fd46577d10f2ff3a28dc57ce8cf0abfb6", [] ], "cosh.spec.js": [ - "a95e3aa5df371f7bbaea05db543129fdecc7eafe", + "e478587408cbd6d4bd100987a18eb5d54cd98c89", [] ], "countLeadingZeros.spec.js": [ @@ -1811,23 +1931,23 @@ [] ], "cross.spec.js": [ - "1cbc17b9e4b9819c604934ddc5c0d9feb16cf13e", + "22a07688c17cd9db5d87ab213b866b73dfea009e", [] ], "degrees.spec.js": [ - "4867282d29da870d3dd5b3784e8fe7e9093a0f61", + "818d0d8adea003bca07ad4880b69e8dff7a0dad4", [] ], "determinant.spec.js": [ - "277d197c9981180ee2a045dcd4782a8784d71d65", + "9f4ca71e685c68c6dadd93ee9e27bf5e79d75549", [] ], "distance.spec.js": [ - "154a52c2764183f1eb18ab94f9168dc809dd3df1", + "b03ec5bd9f1d011bae33905628d567039b0a4304", [] ], "dot.spec.js": [ - "b219b87e6c1c21ee26891ae4a489a537b1e57255", + "0c4a04ea842c8f76a7c17c17de973ecba36fd19a", [] ], "dpdx.spec.js": [ @@ -1855,11 +1975,11 @@ [] ], "exp.spec.js": [ - "597876a5618db89c59380895354e60041189119c", + "cc71398ef9f1f3eba6cde9b77bfdcef01ce6abaf", [] ], "exp2.spec.js": [ - "bcc999b2253259bcede4d9e751145a42e413d99f", + "59fe1646befdb1299117cfd7fc02f1fe5f06c263", [] ], "extractBits.spec.js": [ @@ -1867,11 +1987,11 @@ [] ], "faceForward.spec.js": [ - "12247cf8830f249f74d5de8455033304cf23df9f", + "125fd0ec2b44b3c8d9dd59395848dfb76b8e67bd", [] ], "firstLeadingBit.spec.js": [ - "f556dba7883d32de82b0f9c372acc23c700b32e1", + "c5d58bfb39781bc35040c0010058df2ddcc3a694", [] ], "firstTrailingBit.spec.js": [ @@ -1879,19 +1999,19 @@ [] ], "floor.spec.js": [ - "0d5c30230e1d3fa80276bd51b7487ef6bb31013a", + "edde8ce867eeba9cddc882422250caf6b51c0a5d", [] ], "fma.spec.js": [ - "735dd2fa29b4678070377735b3ab31c13a110da0", + "ee4e4ef8590e977db8d16945aa7ad83b8fafd146", [] ], "fract.spec.js": [ - "c8393c50f7d7d31cd84765a71abfd3905dba480b", + "f03da3bf0e6ab623f9a1e2bb16546910c90be0b4", [] ], "frexp.spec.js": [ - "68a570612f6f5fb602b1b763d71fa999a4c6cce5", + "4c37f33f29ba839cbdb9bad4a4aaa11c068d451d", [] ], "fwidth.spec.js": [ @@ -1911,43 +2031,43 @@ [] ], "inversesqrt.spec.js": [ - "f2944c6792365c20f57954cad5a2b080e9819bfd", + "74ef5c1c03c5d61ed8cf71f554373b3fa3b93dc5", [] ], "ldexp.spec.js": [ - "a33205c2a7c9f6933626be35054aecd4a846e695", + "49a846c85871162b9859c43d02efc0a2b62024a7", [] ], "length.spec.js": [ - "3a2dedbb5dccd5442a980cb5c2a70b0ce2fee85a", + "f82db383cdb67874971f0e5a47b8041bc6f4b41a", [] ], "log.spec.js": [ - "bf75c9b8481bf26c38b65c379c54eea907865901", + "25f1861086763f6715ab4a68bc70415357e62a4f", [] ], "log2.spec.js": [ - "ca77d645896bd146aac6731fb963b0d9b4edb599", + "e8ab356cf77236b9c8c8a214c70acd9d35354d1a", [] ], "max.spec.js": [ - "ea513fab036a9806a15fa1e3d2d262a68d6a43de", + "e7e7250fe514808380be84f3070cb680925cd8f8", [] ], "min.spec.js": [ - "4ffbdf5c9d8dc85b468bed4ddf5d91211ba116ff", + "814211697af7d8a1b28ba39478d5ce1c673e0240", [] ], "mix.spec.js": [ - "dba656fc558f967f24285ce9a96945b6c4167673", + "5f58060330bf18cb479bcd9a00697183781beb8d", [] ], "modf.spec.js": [ - "972283ee44aec84a60a7d5c6dafbd5121e1ba19a", + "190c02ec86e36fa2a5eacfe6bce05e007780b52c", [] ], "normalize.spec.js": [ - "5cb5b9170cf22d5ebc6125c57810f0b3de966a0c", + "418e7065856029351abd3e3b9b43e61afb675653", [] ], "pack2x16float.spec.js": [ @@ -1971,23 +2091,23 @@ [] ], "pow.spec.js": [ - "dfb92674467ad8830f0a6f53240e891812318b6d", + "29ebde32908cb0216614b92868d65995622bc3c5", [] ], "quantizeToF16.spec.js": [ - "bad11d7fd656c6c2f6e773ba1d384fef9190b6f0", + "d0f37bd04791a28cc29176e37ebbc15aa7b9502a", [] ], "radians.spec.js": [ - "fa888795c1d299574e729afec36183851dfd0edd", + "3da132557e06fdd517ec68dc5e2ac23608ce8603", [] ], "reflect.spec.js": [ - "2fe30f7ca2ae8e3bb9c5e84e8b6c051bb48f1924", + "9d93cfd7b5b826519d8deaac7ac24f8de65b28dc", [] ], "refract.spec.js": [ - "03f1708da3e19ab652189ecb664853080885b432", + "53e77288d007e9896de40360394d6d6bd74ddc36", [] ], "reverseBits.spec.js": [ @@ -1995,39 +2115,39 @@ [] ], "round.spec.js": [ - "10d30b414ce90ddf83139d0d61708e208bcbf385", + "d6366e5bba242b98a9ae3b79525158a523bf3cc4", [] ], "saturate.spec.js": [ - "a75b61b690624e5a7050009e8f5adc016552e76b", + "f2d997d487d723783dec0d4f3d87dd9195f6b0b7", [] ], "select.spec.js": [ - "9f86a28526b358947984512193f91206bec59c7a", + "0718bebefd647beea3052590b84663cd038323a5", [] ], "sign.spec.js": [ - "3f30f351639f82400ac4e5e2e48914f7f0432582", + "4526f52f387c90074dea28d413542278b0f37671", [] ], "sin.spec.js": [ - "04ba6a9e142c15f900c3228c45079c73385cbf5c", + "8883c65bad06cde31d5e1f37e51b7deabad667d3", [] ], "sinh.spec.js": [ - "7936ec3be8fd1410a5e8cb070597489627fb0123", + "62d3f63a16a6221daf9dfd916ec2908d0604d955", [] ], "smoothstep.spec.js": [ - "f338b15dacda70e7b257acd78a1cdcebf425f72a", + "33f29dcdbf9910269651af3817e8acb07b454415", [] ], "sqrt.spec.js": [ - "15cc85adf1f2021aa6cf4d498fe002b73b3a98e3", + "1f80ab40ef64fc008863a6b4950ff53d889ec4bd", [] ], "step.spec.js": [ - "cb122b40439fda0f1a1e4085e046facc976158db", + "100696aab2940b29ec83218b14d128c6d23136fe", [] ], "storageBarrier.spec.js": [ @@ -2035,11 +2155,11 @@ [] ], "tan.spec.js": [ - "e68877bfe8772cb11a5547015e3e333a18eb054f", + "206d62b2e99657711aba03c8ffef193ff583a77b", [] ], "tanh.spec.js": [ - "7a57db1c4069fcffd41da4b7fd2fc55e4af7692b", + "b10e9f3f0f3a5c98b81609d455ad2143c307fae1", [] ], "textureDimension.spec.js": [ @@ -2099,11 +2219,11 @@ [] ], "transpose.spec.js": [ - "222eb917adaa4c667a98b071193b9b41ae8fd5eb", + "ffcf4535714f54854c7c2b2eba75242efbae7039", [] ], "trunc.spec.js": [ - "51d42f38bb5eeffee886399843e4f3a9145313b7", + "0660e566619059231056125b10b5dfc3578c15a8", [] ], "unpack2x16float.spec.js": [ @@ -2137,32 +2257,44 @@ } }, "case_cache.js": [ - "c19bb3df278b2608c08746fe167f48f1d87be6d2", + "ee2f36423d6009f6f4f659caa5404700c1760bb7", [] ], "expression.js": [ - "07ebe7a04351bb02891e046e2240169475cacfba", + "602353daa2eeeb387b78878a27e6be132cb93a1b", [] ], "unary": { - "abstract_float_assignment.spec.js": [ - "6ef9c01ee1cfcb5c993262fa3e6042ada042b4e6", + "af_arithmetic.spec.js": [ + "faeeb97245e5f636301f6bc0a54112a4fbefecfa", + [] + ], + "af_assignment.spec.js": [ + "0428a97e70b553f3192693133324767b6a51a4e9", [] ], "bool_conversion.spec.js": [ - "d4fc0914650d3ec54eafbc06deba180bec8cbbfe", + "a56b6850fd3c7c5dee38c38568ee1990bd113dda", [] ], "bool_logical.spec.js": [ "fb281d04b5020961eeab0365d961ec6f3b6b2f5d", [] ], + "f16_arithmetic.spec.js": [ + "78ce83b41973bc866a10aa02e4cfadd0cf066ec2", + [] + ], + "f16_conversion.spec.js": [ + "169dd8bf42468df06a0cc9584e27247f18987018", + [] + ], "f32_arithmetic.spec.js": [ "bbd8c8afc966079a1be7b6f791aa65a75bd0f7d9", [] ], "f32_conversion.spec.js": [ - "2e8849154470eb76a139a5d3cce784541d2a9cbd", + "b1902e4d51d4b48302530c21f1b516063d9faee5", [] ], "i32_arithmetic.spec.js": [ @@ -2174,7 +2306,7 @@ [] ], "i32_conversion.spec.js": [ - "0b44e5a83fe42268e4dd486e7087725092999c4e", + "b76b7e1466d6e04d0784403123f415dae4c66a12", [] ], "u32_complement.spec.js": [ @@ -2182,11 +2314,11 @@ [] ], "u32_conversion.spec.js": [ - "6d1f3c297ffe1931121c18072488c91931681232", + "573d9478d900a9ed33440a5e880fb55ff600d4aa", [] ], "unary.js": [ - "4e91cf8634a52c447ac6feb21f967731838c55c7", + "1bd494f92fc84e519462694dd595a3e9ac3f294e", [] ] } @@ -2268,7 +2400,7 @@ [] ], "robust_access.spec.js": [ - "f7d8de63b9d22a4e2af6dc39fd3d31dab50d7e13", + "903637ef4d279984464362970360534372baa120", [] ], "robust_access_vertex.spec.js": [ @@ -2296,22 +2428,50 @@ ] }, "zero_init.spec.js": [ - "1ce576132826c165e9f5c5636f441b711c59ed7f", + "98f3edf5209b0f27aa01bfe6b8634fbff8a839e0", [] ] }, "types.js": [ - "ef27fe656564aefb305d8a72ab98cbfadada24d2", + "0c8cf724bb51f75086936d53119e0b1943e0ba93", [] ], "validation": { "const_assert": { "const_assert.spec.js": [ - "735f26f72df4e0667ea16bf8120c758294e8eb5d", + "b7b7a89136c0097b2e5139bbf811798c13db43ba", + [] + ] + }, + "decl": { + "const.spec.js": [ + "547aa93be818803ecc48262c8e636c17ddd2f655", + [] + ], + "override.spec.js": [ + "96a26f20fd65db43021c6c1582e0c3888528ffdd", + [] + ], + "ptr_spelling.spec.js": [ + "f06b81188e8a9bafa627531fa31b271f990a88e7", + [] + ], + "util.js": [ + "6fee41f7002a6a41221f1bd9eb5f588d4ac7ea12", + [] + ], + "var_access_mode.spec.js": [ + "9ee10da3622f230647e8de41e614c0c606c685e2", [] ] }, "expression": { + "access": { + "vector.spec.js": [ + "59961c89da5a3e1d093bdda6081c2d153d3f2743", + [] + ] + }, "binary": { "bitwise_shift.spec.js": [ "5c29a1858cd2bf007b7c9a0411f80eba6bfd5d08", @@ -2320,13 +2480,143 @@ }, "call": { "builtin": { + "abs.spec.js": [ + "0c0ade4df7dff0e0f3754b9d3d0e7287ca503a52", + [] + ], + "acos.spec.js": [ + "788b32cb84f7bc26e67ca866f80c04e03017ad98", + [] + ], + "acosh.spec.js": [ + "b3cb566eec96275ed25e59533098955092a77cbd", + [] + ], + "asin.spec.js": [ + "5221aff37a2d89bfb5e5baca3b1b428d7ce0b456", + [] + ], + "asinh.spec.js": [ + "6b4af70cb3562f1483dad5cace698e87253d775b", + [] + ], + "atan.spec.js": [ + "e4d280a437eeee67bff6fdb93196a91af3f2a863", + [] + ], + "atan2.spec.js": [ + "f7048707cbde89faaf7448f0b78de32729b1462a", + [] + ], + "atanh.spec.js": [ + "10ec7a6d093e271dbdac377084cbee8e73a90428", + [] + ], "atomics.spec.js": [ "fb3bf6bd4043b7e046ca640509ddbc9dbd347a26", [] + ], + "bitcast.spec.js": [ + "06281d06e77ff93db350917adcf54a419785b1aa", + [] + ], + "ceil.spec.js": [ + "80dd07d236f6cb21a0e5d0e05506611faa075789", + [] + ], + "clamp.spec.js": [ + "406793612c3a547c7da7e50afa868d0a5cb0e66a", + [] + ], + "const_override_validation.js": [ + "273659a8a7cbbf43aa6bfe0e2a21fe53d683a5c0", + [] + ], + "cos.spec.js": [ + "df6fee7feb547533cbda6b08d4fad53168935dd3", + [] + ], + "cosh.spec.js": [ + "e4f5705f743076efdbc0c7dad99748c57ca78e64", + [] + ], + "degrees.spec.js": [ + "c42518c4d490076c28b20a79d6758216ff739916", + [] + ], + "exp.spec.js": [ + "579f9349cc3d41ac8f5b1fbe301b85abf22b0470", + [] + ], + "exp2.spec.js": [ + "91cee438b1e0c8f747855f9ea9d05c58cfbe3aa8", + [] + ], + "inverseSqrt.spec.js": [ + "f111baeb58d17b74e0e8acdb86a569177bc8f6ae", + [] + ], + "length.spec.js": [ + "97b0ba8f31be753568f1d92e8e399a6862dd5e21", + [] + ], + "log.spec.js": [ + "bc9bc15dc602d7f35d8dff366932d39c6ae1a591", + [] + ], + "log2.spec.js": [ + "be3e8768e1854765b99de6d085644d8a4a80baa8", + [] + ], + "modf.spec.js": [ + "908ef7a3e41b19aeb7a184091239b9853e844b3d", + [] + ], + "radians.spec.js": [ + "1564ae7a581f71023ba7b5b29f2c9486a4f1c550", + [] + ], + "round.spec.js": [ + "100439a242f3dbb7573709cc8a90053a58121ba7", + [] + ], + "saturate.spec.js": [ + "d67ccaed853167503df5b8c9b5779fbfce282dca", + [] + ], + "sign.spec.js": [ + "7a4cb16419ee837c37ce741efe993fae9ca42382", + [] + ], + "sin.spec.js": [ + "c05c8665688b1821aef1bedff661251507b8c1b1", + [] + ], + "sinh.spec.js": [ + "388afbddc578643bf3a7eaeb453e3d8999f55b40", + [] + ], + "sqrt.spec.js": [ + "a2c63e122795dbddf466e8154859745549600ded", + [] + ], + "tan.spec.js": [ + "80bbe17cbe59795a5441ea4b27101981799805a4", + [] ] } } }, + "functions": { + "alias_analysis.spec.js": [ + "45af2c7dfd5c472e123ea4a0ed10a5226f48a18b", + [] + ], + "restrictions.spec.js": [ + "84167312ac842b6ebd55b4b7dcacf8fc6402d3a2", + [] + ] + }, "parse": { "align.spec.js": [ "9fd1987a756d811ef066c550596ad87617eebfc1", @@ -2364,6 +2654,10 @@ "f57412e34e017ac34d36343260e493b1fd5d4dea", [] ], + "diagnostic.spec.js": [ + "42530a004be2089ee8ee75a00d7b96c16d5ae317", + [] + ], "discard.spec.js": [ "c2694bda16de47afd6bfc2e9242e2574e7d062d2", [] @@ -2373,11 +2667,15 @@ [] ], "identifiers.spec.js": [ - "92b19619f31c80b6e96cb363bf413fdc9de0841a", + "2478ff096a1a5f587f0e28a8daec675cd0f50098", [] ], "literal.spec.js": [ - "a1ca97984e8dca26ce71e54953496cf82c10e668", + "3d5b74ccd5b3272c17f96bff4fa3a530363ff95d", + [] + ], + "must_use.spec.js": [ + "75191aeab83b2c093984c3a886f197492a7a7eaf", [] ], "pipeline_stage.spec.js": [ @@ -2397,21 +2695,15 @@ [] ], "var_and_let.spec.js": [ - "974af4d02a1aa16a5b0220a598cfdae15cc075a6", - [] - ] - }, - "resource_interface": { - "bindings.spec.js": [ - "546a0b0ce81af69a6edf19d1da6ef2c9288c57ed", - [] - ], - "util.js": [ - "6c16a1ff04794bd2b480e3613f1f67bd633d6767", + "93a11517100596ccf5aa1094760425f69c4e518d", [] ] }, "shader_io": { + "binding.spec.js": [ + "d75aa1ccaa2088b978e8c6bc1c0e2a22c60ef27e", + [] + ], "builtins.spec.js": [ "13bdbd7fb76cfe0415294fbdef12969e361bc70d", [] @@ -2420,30 +2712,64 @@ "982e4e3dc90133a1d6fea6138f5c62482cf1c09f", [] ], + "group.spec.js": [ + "4737f00f593117712f30c9024136c56ebf579ef5", + [] + ], + "group_and_binding.spec.js": [ + "615187ed24845856beb306b723d45c8d197e03e8", + [] + ], + "id.spec.js": [ + "4bd1c13d5878926cbb785c45f1749bacdc5864a4", + [] + ], "interpolate.spec.js": [ - "28088f9dcf54b122eec81881b0bb2aa4af3422e2", + "413a60c9cad70226728fb21987d8b7d10bb1fb1f", [] ], "invariant.spec.js": [ - "1729502082ecc49ca7cc9c10b384225102eb4766", + "cb2e4c5909cca302804f33556eb7f5303466f7c8", [] ], "locations.spec.js": [ - "5e7a43a4e2a5e618ef670224a1ffdff1930c0ba8", + "c40d895ec4c11480bf96228a1a237728cb21943e", + [] + ], + "size.spec.js": [ + "4a21f6b3b90af73a7802df1b273f3e9419494947", [] ], "util.js": [ - "3092eb8182561f612de060aeb4cf8895cd852fa4", + "8a9e85ae047004c7cca5e8dfd1e4e525c6f05c24", + [] + ], + "workgroup_size.spec.js": [ + "f40d3b4428b0c8c47e5f799ea2d28a5ad664765f", [] ] }, "shader_validation_test.js": [ - "4014f4f16fbae370e7d35038b332cecf4e2df911", + "5736b788fc5b361a66c6fa9ec5d24dec7182cfa3", [] ], + "types": { + "alias.spec.js": [ + "d5a6e3f57a7d53b351aff79d607c4e247c3f2125", + [] + ], + "struct.spec.js": [ + "a4926ed1efd6d9dcebd229adb5ae84b6905b38a0", + [] + ], + "vector.spec.js": [ + "74e687aab5685c41e338997a0aea8b5190de70ac", + [] + ] + }, "uniformity": { "uniformity.spec.js": [ - "1c9742918c1daa3ae96b5de8c771d470f03ad52a", + "140cc26d475c4d083ef36ac4b18374e8170c6745", [] ] } @@ -2475,11 +2801,11 @@ [] ], "constants.js": [ - "99575c5c85c42448d220921c1d2d8ac16f4c5f01", + "da63af2bcae22533cdedd47fb927dffb69af3bed", [] ], "conversion.js": [ - "024807ca0c060f5721e0b3246f280cb71920e75d", + "d49cdc1f057b9c463f72780952ec391b9c792210", [] ], "copy_to_texture.js": [ @@ -2491,15 +2817,15 @@ [] ], "device_pool.js": [ - "46ca625388d9037f16085edea60dad4e01745883", + "ab2f6350fc4588cf79af7ecfbaeff5857db0c1e5", [] ], "floating_point.js": [ - "9bafdfb995b3a400f5e842d776b048e41ccc2152", + "2cc5159c0aa0355f3de32f6ccb65c550a790c728", [] ], "math.js": [ - "de04fa06764ca0b9942141440e55b5671565fcaa", + "bb2846f883917720fe88543f0ca9f481180af747", [] ], "memory.js": [ @@ -2510,13 +2836,17 @@ "41d519f6b3666b0ad36cc4b1fbb213deb0052383", [] ], + "prng.js": [ + "791af58b22f95b98de87b7e94d17c896770fd71a", + [] + ], "shader.js": [ "2763d30a390aa5c36f6fff58262d1b677a34fb72", [] ], "texture": { "base.js": [ - "e5425c57dc31ea28509cee9d6d34e2a7bff7410a", + "4c331f1ff0c74abd24629c6247d17e3cd3936b2b", [] ], "data_generation.js": [ @@ -2532,19 +2862,19 @@ [] ], "texel_data.js": [ - "e98fb72c1485d5ef3ab6470584da4cbc9c565d5d", + "5896d594bc1fa6aa5b2863690ae321fd9317d961", [] ], "texel_data.spec.js": [ - "c4d20599d1e9bff7d3da1e652122ea722960671b", + "a4bdb34b18664ea1a6ceb1fab06315de1df62d26", [] ], "texel_view.js": [ - "d075f2547526838a7edfaa86d1383da689bf32d6", + "1bfee89f71f485fd504b90f5f1146b98cf0ceb75", [] ], "texture_ok.js": [ - "0803046ddb4b3283e3fac913129107106f134fee", + "bd329bac4430fa50105bbedbb0acd9fb44457b62", [] ], "texture_ok.spec.js": [ @@ -2564,7 +2894,7 @@ "web_platform": { "canvas": { "configure.spec.js": [ - "d01afc2d7b60bb9643c0e4a4b0ee86a530789982", + "171f8036c3de8c6c2fb06cb7971eb60353b62338", [] ], "context_creation.spec.js": [ @@ -2586,15 +2916,27 @@ }, "copyToTexture": { "ImageBitmap.spec.js": [ - "cbd40eeb81e86dc5733099f1f5c5d451cc08a537", + "2f7677a492f48bd875ee09dafecabf8751c3f040", + [] + ], + "ImageData.spec.js": [ + "fc0bbc51cf44a1223dd02f570d59334fc3249cd0", [] ], "canvas.spec.js": [ - "4eaa614e8fd56c2c21c1fb1d11a01405dfa3f478", + "c52f7af58795120f7fd2af8c3dd11e5a64040133", + [] + ], + "image.spec.js": [ + "88a630a9d57b187bb50fbc9b15d5b043f745614a", + [] + ], + "util.js": [ + "2471edbfa3d2f77be2cda2071389d91344d278ea", [] ], "video.spec.js": [ - "32a0b77e9938b9c9e8bddca4ccde812d76e19609", + "b9ee472a618b70acb7114a954dda1c638857ce2b", [] ] }, @@ -2673,7 +3015,7 @@ ] }, "util.js": [ - "25e524f9a73e78c93adf19090bbeb79bf0233365", + "6a6856ad12bf0d676d4e2874348f82d879ee79fb", [] ], "worker": { @@ -2697,7 +3039,7 @@ "testharness": { "webgpu": { "cts.https.html": [ - "183d95783f8b4bfd8848039f219ebef0ffca950e", + "60d93b5a8d15bfa527b0f56fa0073eb2d3d35245", [ "webgpu/cts.https.html?q=webgpu:api,operation,adapter,requestAdapter:requestAdapter:*", {} @@ -3442,6 +3784,26 @@ "webgpu/cts.https.html?q=webgpu:api,operation,sampling,anisotropy:anisotropic_filter_mipmap_color:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:api,operation,sampling,filter_mode:magFilter,linear:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:api,operation,sampling,filter_mode:magFilter,nearest:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:api,operation,sampling,filter_mode:minFilter,linear:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:api,operation,sampling,filter_mode:minFilter,nearest:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:api,operation,sampling,filter_mode:mipmapFilter:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:api,operation,shader_module,compilation_info:getCompilationInfo_returns:*", {} @@ -3818,6 +4180,10 @@ "webgpu/cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxColorAttachments:createRenderPipeline,at_over:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxColorAttachments:validate,kMaxColorAttachmentsToTest:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxColorAttachments:validate,maxColorAttachmentBytesPerSample:*", {} @@ -5806,6 +6172,10 @@ "webgpu/cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createComputePipeline:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createComputePipelineAsync:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createPipelineLayout:*", {} @@ -5822,6 +6192,10 @@ "webgpu/cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createRenderPipeline:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createRenderPipelineAsync:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createSampler:*", {} @@ -5934,6 +6308,50 @@ "webgpu/cts.https.html?q=webgpu:api,validation,texture,rg11b10ufloat_renderable:create_texture:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,encoding,cmds,copyTextureToBuffer:compressed:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,compute_pass,unused:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,compute_pass,used:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,render_pass,unused:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,render_pass,used:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,render_pipeline,fragment_state:colorState:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,render_pipeline,shader_module:sample_mask:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,render_pipeline,vertex_state:maxVertexAttributesVertexIndexInstanceIndex:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,texture,createTexture:unsupportedTextureFormats:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,texture,createTexture:unsupportedTextureViewFormats:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:compat,api,validation,texture,cubeArray:cube_array:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:examples:basic,async:*", {} @@ -6026,6 +6444,86 @@ "webgpu/cts.https.html?q=webgpu:idl,constants,flags:TextureUsage,values:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:equals:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:greater_equals:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:greater_than:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:less_equals:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:less_than:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:not_equals:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_matrix_addition:matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_matrix_subtraction:matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:vector_scalar:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,bitwise:bitwise_and:*", {} @@ -6098,6 +6596,30 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,bool_logical:or_short_circuit:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_addition:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_addition:scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_addition:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_addition:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_addition:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_addition:vector_scalar_compound:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:equals:*", {} @@ -6122,6 +6644,150 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:not_equals:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_division:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_division:scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_division:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_division:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_division:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_division:vector_scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_addition:matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_addition:matrix_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_matrix_multiplication:matrix_matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_matrix_multiplication:matrix_matrix_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_scalar_multiplication:matrix_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_scalar_multiplication:matrix_scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_scalar_multiplication:scalar_matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_subtraction:matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_subtraction:matrix_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_vector_multiplication:matrix_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_vector_multiplication:vector_matrix:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_matrix_vector_multiplication:vector_matrix_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_multiplication:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_multiplication:scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_multiplication:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_multiplication:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_multiplication:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_multiplication:vector_scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_remainder:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_remainder:scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_remainder:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_remainder:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_remainder:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_remainder:vector_scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_subtraction:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_subtraction:scalar_compound:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_subtraction:scalar_vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_subtraction:vector:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_subtraction:vector_scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f16_subtraction:vector_scalar_compound:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_addition:scalar:*", {} @@ -6134,6 +6800,10 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_addition:scalar_vector:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_addition:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_addition:vector_scalar:*", {} @@ -6178,6 +6848,10 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_division:scalar_vector:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_division:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_division:vector_scalar:*", {} @@ -6246,6 +6920,10 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_multiplication:scalar_vector:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_multiplication:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_multiplication:vector_scalar:*", {} @@ -6266,6 +6944,10 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_remainder:scalar_vector:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_remainder:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_remainder:vector_scalar:*", {} @@ -6286,6 +6968,10 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_subtraction:scalar_vector:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_subtraction:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,binary,f32_subtraction:vector_scalar:*", {} @@ -6695,15 +7381,43 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:exchange:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_storage_advanced:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_storage_basic:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicLoad:load:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_workgroup_advanced:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_workgroup_basic:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_storage_advanced:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_storage_basic:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_workgroup_advanced:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_workgroup_basic:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicLoad:load_storage:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicLoad:load_workgroup:*", {} ], [ @@ -6731,7 +7445,19 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_storage_advanced:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_storage_basic:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_workgroup_advanced:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_workgroup_basic:*", {} ], [ @@ -6966,6 +7692,18 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16_vec4:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f32:*", {} @@ -6991,7 +7729,15 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:f16_vec4:*", {} ], [ @@ -7075,7 +7821,15 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,faceForward:f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,faceForward:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,faceForward:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,faceForward:f16_vec4:*", {} ], [ @@ -7254,6 +8008,18 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f16_vec4:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f32:*", {} @@ -7343,27 +8109,83 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:matching_abstract_float:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_matching:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:matching_f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_nonmatching_vec2:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:matching_f32:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_nonmatching_vec3:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:monmatching_f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_nonmatching_vec4:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:nonmatching_abstract_float:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f16_matching:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:nonmatching_f32:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f16_nonmatching_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f16_nonmatching_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f16_nonmatching_vec4:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_matching:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_nonmatching_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_nonmatching_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_nonmatching_vec4:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_fract:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec2_fract:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec2_whole:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec3_fract:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec3_whole:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec4_fract:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec4_whole:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_whole:*", {} ], [ @@ -7435,7 +8257,15 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f16_vec4:*", {} ], [ @@ -7503,7 +8333,15 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,reflect:f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,reflect:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,reflect:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,reflect:f16_vec4:*", {} ], [ @@ -7523,7 +8361,15 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,refract:f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,refract:f16_vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,refract:f16_vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,call,builtin,refract:f16_vec4:*", {} ], [ @@ -8039,11 +8885,19 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,abstract_float_assignment:f16:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,af_arithmetic:negation:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,abstract_float_assignment:f32:*", + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,af_assignment:abstract:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,af_assignment:f16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,af_assignment:f32:*", {} ], [ @@ -8070,6 +8924,38 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,bool_logical:negation:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_arithmetic:negation:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:bool:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:f16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:f16_mat:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:f32:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:f32_mat:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:i32:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f16_conversion:u32:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f32_arithmetic:negation:*", {} @@ -8082,6 +8968,10 @@ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f32_conversion:f16:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f32_conversion:f16_mat:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,execution,expression,unary,f32_conversion:f32:*", {} @@ -8675,13 +9565,105 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression:*", + "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_assert:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_and_assert:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_and_no_assert:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_or_assert:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_or_no_assert:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_no_assert:*", {} ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:evaluation_stage:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,const:no_direct_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,const:no_indirect_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,const:no_indirect_recursion_via_array_size:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,const:no_indirect_recursion_via_struct_attribute:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,override:no_direct_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,override:no_indirect_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:let_ptr_explicit_type_matches_var:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:let_ptr_reads:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:let_ptr_writes:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_address_space_never_uses_access_mode:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_bad_store_type:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_handle_space_invalid:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_not_instantiable:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:explicit_access_mode:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:implicit_access_mode:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:read_access:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:write_access:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,access,vector:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,expression,binary,bitwise_shift:shift_left_concrete:*", {} @@ -8698,10 +9680,338 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,expression,binary,bitwise_shift:shift_right_vec_size_mismatch:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,abs:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acos:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acos:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acosh:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acosh:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asin:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asin:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asinh:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asinh:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:integer_argument_x:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:integer_argument_y:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atanh:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atanh:values:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atomics:stage:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_const_to_f32:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_to_f16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_to_vec3h:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_type_constructible:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_type_nonconstructible:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:valid_vec2h:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:valid_vec4h:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ceil:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ceil:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cos:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cos:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cosh:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cosh:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,degrees:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,degrees:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp2:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp2:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,inverseSqrt:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,inverseSqrt:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:scalar:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec2:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec3:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec4:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log2:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log2:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,modf:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,modf:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,radians:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,radians:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,round:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,round:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,saturate:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,saturate:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sign:unsigned_integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sign:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sin:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sin:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sinh:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sinh:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sqrt:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sqrt:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tan:integer_argument:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tan:values:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:aliasing_inside_function:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:member_accessors:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:one_pointer_one_module_scope:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:same_pointer_read_and_write:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:subcalls:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:two_pointers:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:call_arg_types_match_params:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:entry_point_call_target:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:function_parameter_matching:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:function_parameter_types:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:function_return_types:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:no_direct_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:no_indirect_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:param_names_must_differ:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:param_number_matches_call:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:param_scope_is_function_body:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,functions,restrictions:vertex_returns_position:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,align:multi_align:*", {} @@ -8774,6 +10084,38 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,const_assert:parse:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_attribute_different_location:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_attribute_same_location:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_directive:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:invalid_locations:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:invalid_severity:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:valid_locations:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:valid_params:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,diagnostic:warning_unknown_rule:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,discard:placement:*", {} @@ -8783,13 +10125,49 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:identifiers:*", + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:alias_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_const_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_let_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_param_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_var_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:module_const_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:module_var_name:*", {} ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:non_normalized:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:override_name:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,identifiers:struct_name:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,literal:abstract_float:*", {} @@ -8818,6 +10196,22 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,literal:u32:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,must_use:builtin_must_use:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,must_use:builtin_no_must_use:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,must_use:call:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,must_use:declaration:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,parse,pipeline_stage:compute_parsing:*", {} @@ -9027,15 +10421,23 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,validation,resource_interface,bindings:binding_attributes:*", + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,var_and_let:var_access_mode_bad_other_template_contents:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,validation,resource_interface,bindings:different_entry_points:*", + "webgpu/cts.https.html?q=webgpu:shader,validation,parse,var_and_let:var_access_mode_bad_template_delim:*", {} ], [ - "webgpu/cts.https.html?q=webgpu:shader,validation,resource_interface,bindings:single_entry_point:*", + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,binding:binding:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,binding:binding_f16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,binding:binding_without_group:*", {} ], [ @@ -9082,6 +10484,66 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,entry_point:no_entry_point_provided:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group:group:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group:group_f16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group:group_without_binding:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:binding_attributes:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:different_entry_points:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:function_scope:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:function_scope_texture:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:private_function_scope:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:private_module_scope:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:single_entry_point:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,id:id:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,id:id_fp16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,id:id_in_function:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,id:id_non_override:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,id:id_struct_member:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:duplicate:*", {} @@ -9090,6 +10552,10 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:integral_types:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:interpolation_validation:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:require_location:*", {} @@ -9098,18 +10564,14 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:type_and_sampling:*", {} ], - [ - "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,invariant:duplicate:*", - {} - ], - [ - "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,invariant:invalid_use_of_parameters:*", - {} - ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,invariant:not_valid_on_user_defined_io:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,invariant:parsing:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,invariant:valid_only_with_vertex_position_builtin:*", {} @@ -9118,6 +10580,10 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,locations:duplicates:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,locations:location_fp16:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,locations:nesting:*", {} @@ -9130,10 +10596,126 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,locations:type:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,locations:validation:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,size:size:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,size:size_fp16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,size:size_non_struct:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_const:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_fp16:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_fragment_shader:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_function:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_var:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_vertex_shader:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_direct_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_array_element:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_array_size:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_atomic:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_matrix_element:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_ptr_store_type:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_struct_attribute:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_struct_member:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_vector_element:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,struct:no_direct_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_array_element:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_array_size:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_struct_attribute:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_struct_member_nested_in_alias:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,types,vector:vector:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:basics:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:binary_expressions:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:compute_builtin_values:*", {} @@ -9142,6 +10724,30 @@ "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:fragment_builtin_values:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:function_pointer_parameters:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:function_variables:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:functions:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:pointers:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:short_circuit_expressions:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:unary_expressions:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:util,texture,texel_data:float_texel_data_in_shader:*", {} @@ -9282,6 +10888,14 @@ "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,ImageBitmap:from_canvas:*", {} ], + [ + "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,ImageData:copy_subrect_from_ImageData:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,ImageData:from_ImageData:*", + {} + ], [ "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,canvas:color_space_conversion:*", {} @@ -9303,7 +10917,15 @@ {} ], [ - "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,video:copy_from_video_element:*", + "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,image:copy_subrect_from_2D_Canvas:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,image:from_image:*", + {} + ], + [ + "webgpu/cts.https.html?q=webgpu:web_platform,copyToTexture,video:copy_from_video:*", {} ], [ diff --git a/tests/wpt/webgpu/meta/webgpu/cts.https.html.ini b/tests/wpt/webgpu/meta/webgpu/cts.https.html.ini index 5855c0a7f10..05093d1c89e 100644 --- a/tests/wpt/webgpu/meta/webgpu/cts.https.html.ini +++ b/tests/wpt/webgpu/meta/webgpu/cts.https.html.ini @@ -469,116 +469,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,transpose:f16:*] - [:inputSource="const";cols=2;rows=2] - expected: FAIL - - [:inputSource="const";cols=2;rows=3] - expected: FAIL - - [:inputSource="const";cols=2;rows=4] - expected: FAIL - - [:inputSource="const";cols=3;rows=2] - expected: FAIL - - [:inputSource="const";cols=3;rows=3] - expected: FAIL - - [:inputSource="const";cols=3;rows=4] - expected: FAIL - - [:inputSource="const";cols=4;rows=2] - expected: FAIL - - [:inputSource="const";cols=4;rows=3] - expected: FAIL - - [:inputSource="const";cols=4;rows=4] - expected: FAIL - - [:inputSource="uniform";cols=2;rows=2] - expected: FAIL - - [:inputSource="uniform";cols=2;rows=3] - expected: FAIL - - [:inputSource="uniform";cols=2;rows=4] - expected: FAIL - - [:inputSource="uniform";cols=3;rows=2] - expected: FAIL - - [:inputSource="uniform";cols=3;rows=3] - expected: FAIL - - [:inputSource="uniform";cols=3;rows=4] - expected: FAIL - - [:inputSource="uniform";cols=4;rows=2] - expected: FAIL - - [:inputSource="uniform";cols=4;rows=3] - expected: FAIL - - [:inputSource="uniform";cols=4;rows=4] - expected: FAIL - - [:inputSource="storage_r";cols=2;rows=2] - expected: FAIL - - [:inputSource="storage_r";cols=2;rows=3] - expected: FAIL - - [:inputSource="storage_r";cols=2;rows=4] - expected: FAIL - - [:inputSource="storage_r";cols=3;rows=2] - expected: FAIL - - [:inputSource="storage_r";cols=3;rows=3] - expected: FAIL - - [:inputSource="storage_r";cols=3;rows=4] - expected: FAIL - - [:inputSource="storage_r";cols=4;rows=2] - expected: FAIL - - [:inputSource="storage_r";cols=4;rows=3] - expected: FAIL - - [:inputSource="storage_r";cols=4;rows=4] - expected: FAIL - - [:inputSource="storage_rw";cols=2;rows=2] - expected: FAIL - - [:inputSource="storage_rw";cols=2;rows=3] - expected: FAIL - - [:inputSource="storage_rw";cols=2;rows=4] - expected: FAIL - - [:inputSource="storage_rw";cols=3;rows=2] - expected: FAIL - - [:inputSource="storage_rw";cols=3;rows=3] - expected: FAIL - - [:inputSource="storage_rw";cols=3;rows=4] - expected: FAIL - - [:inputSource="storage_rw";cols=4;rows=2] - expected: FAIL - - [:inputSource="storage_rw";cols=4;rows=3] - expected: FAIL - - [:inputSource="storage_rw";cols=4;rows=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,image_copy,buffer_texture_copies:device_mismatch:*] [:copyType="CopyB2T"] expected: FAIL @@ -697,56 +587,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,log2:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,vertex_state,index_format:index_format,change_pipeline_after_setIndexBuffer:*] [:setPipelineBeforeSetIndexBuffer=false] expected: FAIL @@ -956,6 +796,198 @@ [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,createTexture:texture_size,3d_texture,uncompressed_format:*] [:format="r8unorm"] @@ -1066,6 +1098,9 @@ [:format="rgb9e5ufloat"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,render_pipeline,fragment_state:limits,maxColorAttachmentBytesPerSample,aligned:*] [:format="r8unorm"] @@ -1161,6 +1196,9 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,setBindGroup:dynamic_offsets_match_expectations_in_pass_encoder:*] [:encoderType="compute%20pass";dynamicOffsets=[256,0\];useU32array=false] @@ -2125,6 +2163,15 @@ [:format="bc7-rgba-unorm-srgb";aspect="stencil-only"] expected: FAIL + [:format="rgb10a2uint";aspect="all"] + expected: FAIL + + [:format="rgb10a2uint";aspect="depth-only"] + expected: FAIL + + [:format="rgb10a2uint";aspect="stencil-only"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,compute_pass:indirect_dispatch_buffer_state:*] [:] @@ -8424,6 +8471,18 @@ [:dimension="3d";format="rgb9e5ufloat"] expected: FAIL + [:dimension="_undef_";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,render_pipeline,shader_module:device_mismatch:*] [:] @@ -10401,6 +10460,12 @@ [:isAsync=true;format="bc7-rgba-unorm-srgb"] expected: FAIL + [:isAsync=false;format="rgb10a2uint"] + expected: FAIL + + [:isAsync=true;format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,createBindGroup:buffer,effective_buffer_binding_size:*] [:type="uniform"] @@ -10708,56 +10773,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,clamp:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,encoding,encoder_open_state:compute_pass_commands:*] [:command="setBindGroup"] expected: FAIL @@ -10791,56 +10806,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,inversesqrt:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,bitwise:bitwise_exclusive_or_compound:*] [:type="i32";inputSource="const";vectorize="_undef_"] expected: FAIL @@ -10939,56 +10904,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,min:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,reflect:f32_vec4:*] [:inputSource="const"] expected: FAIL @@ -11187,6 +11102,9 @@ [:dispatchSize=65535] expected: FAIL + [:dispatchSize="maximum"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,query_set,destroy:invalid_queryset:*] [:] @@ -11800,6 +11718,15 @@ [:srcFormat="rgb9e5ufloat";dstFormat="rgb9e5ufloat";dimension="3d"] expected: FAIL + [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,pipeline_stage:duplicate_compute_on_function:*] [:dupe=""] @@ -14112,20 +14039,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_vec2_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f32_vec3_fract:*] [:inputSource="const"] expected: FAIL @@ -14594,6 +14507,9 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,exp:abstract_float:*] [:inputSource="const";vectorize="_undef_"] @@ -15803,56 +15719,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,max:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,i32_comparison:not_equals:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -20174,6 +20040,12 @@ [:srcFormat="rgb9e5ufloat";dstFormat="rgb9e5ufloat";dimension="3d"] expected: FAIL + [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:srcFormat="rgb10a2uint";dstFormat="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,buffer,mapping:getMappedRange,sizeAndOffsetOOB,mappedAtCreation:*] [:] @@ -22006,6 +21878,60 @@ [:entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}}] expected: FAIL + [:entry={"buffer":{"type":"uniform"}};awaitLost=true] + expected: FAIL + + [:entry={"buffer":{"type":"uniform"}};awaitLost=false] + expected: FAIL + + [:entry={"buffer":{"type":"storage"}};awaitLost=true] + expected: FAIL + + [:entry={"buffer":{"type":"storage"}};awaitLost=false] + expected: FAIL + + [:entry={"buffer":{"type":"read-only-storage"}};awaitLost=true] + expected: FAIL + + [:entry={"buffer":{"type":"read-only-storage"}};awaitLost=false] + expected: FAIL + + [:entry={"sampler":{"type":"comparison"}};awaitLost=true] + expected: FAIL + + [:entry={"sampler":{"type":"comparison"}};awaitLost=false] + expected: FAIL + + [:entry={"sampler":{"type":"filtering"}};awaitLost=true] + expected: FAIL + + [:entry={"sampler":{"type":"filtering"}};awaitLost=false] + expected: FAIL + + [:entry={"sampler":{"type":"non-filtering"}};awaitLost=true] + expected: FAIL + + [:entry={"sampler":{"type":"non-filtering"}};awaitLost=false] + expected: FAIL + + [:entry={"texture":{"multisampled":false}};awaitLost=true] + expected: FAIL + + [:entry={"texture":{"multisampled":false}};awaitLost=false] + expected: FAIL + + [:entry={"texture":{"multisampled":true,"sampleType":"unfilterable-float"}};awaitLost=true] + expected: FAIL + + [:entry={"texture":{"multisampled":true,"sampleType":"unfilterable-float"}};awaitLost=false] + expected: FAIL + + [:entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}};awaitLost=true] + expected: FAIL + + [:entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}};awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,resource_init,buffer:copy_buffer_to_texture:*] [:] @@ -23125,6 +23051,18 @@ [:inputSource="storage_rw";vectorize=4] expected: FAIL + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureSample:sampled_array_3d_coords:*] [:] @@ -23662,8 +23600,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,rg11b10ufloat_renderable:begin_render_bundle_encoder:*] - [cts.https.html?q=webgpu:api,validation,queue,destroyed,texture:copyTextureToBuffer:*] [:] expected: FAIL @@ -23910,56 +23846,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,exp:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,command_buffer,clearBuffer:clear:*] [:] expected: FAIL @@ -24732,6 +24618,24 @@ [:numElements=16] expected: FAIL + [:numElements=4;awaitLost=true] + expected: FAIL + + [:numElements=4;awaitLost=false] + expected: FAIL + + [:numElements=8;awaitLost=true] + expected: FAIL + + [:numElements=8;awaitLost=false] + expected: FAIL + + [:numElements=16;awaitLost=true] + expected: FAIL + + [:numElements=16;awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,binary,bitwise:bitwise_exclusive_or:*] [:type="i32";inputSource="const";vectorize="_undef_"] @@ -26566,6 +26470,42 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";depthOrArrayLayers=3;dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";depthOrArrayLayers=1;dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";depthOrArrayLayers=1;dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";depthOrArrayLayers=3;dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";depthOrArrayLayers=3;dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";depthOrArrayLayers=1;dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";depthOrArrayLayers=1;dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";depthOrArrayLayers=3;dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";depthOrArrayLayers=3;dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";depthOrArrayLayers=1;dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";depthOrArrayLayers=1;dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";depthOrArrayLayers=3;dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";depthOrArrayLayers=3;dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,render_pass,resolve:resolve_attachment:*] [:] @@ -26780,8 +26720,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,compute_pipeline:overrides,value,validation_error,f16:*] - [cts.https.html?q=webgpu:examples:test_name:*] [:] expected: FAIL @@ -27739,6 +27677,276 @@ [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,flow_control,eval_order:binary_op_chain_C_R_C_C:*] [:] @@ -29295,6 +29503,33 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,comments:line_comment_terminators:*] [:blankspace=["%20","space"\]] @@ -29457,56 +29692,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,abs:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,encoding,cmds,clearBuffer:buffer_state:*] [:bufferState="valid"] expected: FAIL @@ -29761,62 +29946,204 @@ [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,buffer,mapping:getMappedRange,state,mappedAtCreation:*] [:] expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,asin:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,i32_arithmetic:multiplication_scalar_vector:*] [:inputSource="const";vectorize_rhs=2] expected: FAIL @@ -29855,56 +30182,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,sin:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_attribute_shaderLocation_limit:*] [:] expected: FAIL @@ -30109,20 +30386,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_vec3_exp:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,bitcast:vec2h_to_i32:*] [:inputSource="const";vectorize="_undef_";alias=false] expected: FAIL @@ -31332,6 +31595,276 @@ [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,setPipeline:invalid_pipeline:*] [:] @@ -32345,6 +32878,438 @@ [:storageClass="workgroup";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false] expected: FAIL + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="storage";storageMode="read_write";access="write";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=false;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="uniform";access="read";dynamicOffset=true;containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="private";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="function";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="none";isAtomic=true] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="module-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="array";shadowingMode="function-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="read";containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="none";isAtomic=true] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="module-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="array";shadowingMode="function-scope";isAtomic=true] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="matrix";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="none";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="module-scope";isAtomic=false] + expected: FAIL + + [:addressSpace="workgroup";access="write";containerType="vector";shadowingMode="function-scope";isAtomic=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxTextureDimension1D:createTexture,at_over:*] [:limitTest="atDefault";testValueName="atLimit"] @@ -32378,20 +33343,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,bitcast:vec2i_to_vec4h:*] [:inputSource="const";vectorize="_undef_";alias=false] expected: FAIL @@ -41215,8 +42166,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:equals:*] - [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_default_case_break:*] [:] expected: FAIL @@ -42034,6 +42983,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,flow_control,eval_order:logical_and:*] [:] @@ -42121,6 +43082,18 @@ [:type="timestamp"] expected: FAIL + [:type="occlusion";awaitLost=true] + expected: FAIL + + [:type="occlusion";awaitLost=false] + expected: FAIL + + [:type="timestamp";awaitLost=true] + expected: FAIL + + [:type="timestamp";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxSamplersPerShaderStage:createPipelineLayout,at_over:*] [:limitTest="atDefault";testValueName="atLimit";visibility=1;order="forward"] @@ -43726,6 +44699,342 @@ [:format="bc7-rgba-unorm-srgb"] expected: FAIL + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:web_platform,external_texture,video:importExternalTexture,sampleWithVideoFrameWithVisibleRectParam:*] [:videoName="four-colors-vp8-bt601.webm"] @@ -43799,106 +45108,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,fract:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atan2:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,fma:f32:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -43953,6 +45162,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_case:*] [:] @@ -45191,6 +46412,33 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,dynamic_state:setViewport,depth_rangeAndOrder:*] [:] @@ -45470,56 +46718,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,floor:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:abstract_float:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -45570,8 +46768,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,render_pipeline,overrides:value,validation_error,f16,fragment:*] - [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,state_tracking:all_needed_vertex_buffer_should_be_bound:*] [:] expected: FAIL @@ -47300,6 +48496,42 @@ [:method="CopyT2B";depthOrArrayLayers=32;dimension="3d";format="rgb9e5ufloat"] expected: FAIL + [:method="WriteTexture";depthOrArrayLayers=1;dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:method="WriteTexture";depthOrArrayLayers=1;dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:method="WriteTexture";depthOrArrayLayers=3;dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:method="WriteTexture";depthOrArrayLayers=32;dimension="3d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyB2T";depthOrArrayLayers=1;dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyB2T";depthOrArrayLayers=1;dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyB2T";depthOrArrayLayers=3;dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyB2T";depthOrArrayLayers=32;dimension="3d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyT2B";depthOrArrayLayers=1;dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyT2B";depthOrArrayLayers=1;dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyT2B";depthOrArrayLayers=3;dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:method="CopyT2B";depthOrArrayLayers=32;dimension="3d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,countLeadingZeros:u32:*] [:inputSource="const";vectorize="_undef_"] @@ -48505,58 +49737,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,rg11b10ufloat_renderable:create_texture:*] - -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,saturate:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,u32_arithmetic:division_compound:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -48800,20 +49980,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_exp:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,buffers,threading:destroyed:*] [:] expected: FAIL @@ -51222,6 +52388,2358 @@ [:dimension="2d";format="bc7-rgba-unorm-srgb";size=[4,4,257\]] expected: FAIL + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc1-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc2-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc3-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc4-r-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc5-rg-snorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-ufloat";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc6h-rgb-float";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":-4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":1,"add":4},{"mult":0,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":-4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":1,"add":4},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bc7-rgba-unorm-srgb";sizeVariant=[{"mult":0,"add":4},{"mult":0,"add":4},{"mult":1,"add":1}\]] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,distance:f16:*] [:inputSource="const";vectorize="_undef_"] @@ -51386,6 +54904,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,shader_io,entry_point:missing_attribute_on_param:*] [:target_stage=""] @@ -51410,6 +55024,12 @@ [:] expected: FAIL + [:awaitLost=true] + expected: FAIL + + [:awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,asin:abstract_float:*] [:inputSource="const";vectorize="_undef_"] @@ -51803,6 +55423,12 @@ [:dimension="2d";format="bc7-rgba-unorm-srgb"] expected: FAIL + [:dimension="_undef_";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,draw:max_draw_count:*] [:bundleFirstHalf=false;bundleSecondHalf=false;maxDrawCount=0] @@ -51859,75 +55485,11 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,trunc:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,render_pass,render_pass_descriptor:color_attachments,empty:*] [:] expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_vec4_whole:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,createBindGroup:bind_group_layout,device_mismatch:*] [:] expected: FAIL @@ -52092,6 +55654,2046 @@ [:format="rgb9e5ufloat"] expected: FAIL + [:format="r8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,statement,increment_decrement:scalar_i32_increment:*] [:] @@ -52698,6 +58300,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,vertex_state,correctness:buffers_with_varying_step_mode:*] [:] @@ -52815,12 +58513,16 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,unary,abstract_float_assignment:f16:*] - [cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createRenderPipeline:*] [:] expected: FAIL + [:awaitLost=true] + expected: FAIL + + [:awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,copyTextureToTexture:mipmap_level:*] [:dimension="1d"] @@ -55977,11 +61679,353 @@ [:usageType="QUERY_RESOLVE"] expected: FAIL + [:usageType="MAP_READ";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_READ";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="MAP_WRITE";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDEX";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="VERTEX";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="UNIFORM";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="STORAGE";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="INDIRECT";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_NONE";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_NONE";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC_DST";awaitLost=true;mappedAtCreation=false] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=true] + expected: FAIL + + [:usageType="QUERY_RESOLVE";usageCopy="COPY_SRC_DST";awaitLost=false;mappedAtCreation=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createComputePipeline:*] [:] expected: FAIL + [:awaitLost=true] + expected: FAIL + + [:awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,buffer,mapping:mapAsync,abort_over_invalid_error:*] [:] @@ -56121,6 +62165,18 @@ [:inputSource="storage_rw";vectorize=4] expected: FAIL + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,buffer,destroy:error_buffer:*] [:] @@ -56275,20 +62331,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_vec3_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,saturate:f32:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -57392,6 +63434,9 @@ [:format="bc7-rgba-unorm-srgb"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,capability_checks,limits,minUniformBufferOffsetAlignment:createBindGroup,at_over:*] [:limitTest="atDefault";testValueName="atLimit"] @@ -57439,8 +63484,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,bgra8unorm_storage:create_bind_group_layout:*] - [cts.https.html?q=webgpu:api,validation,compute_pipeline:overrides,identifier:*] [:isAsync=true;constants={}] expected: FAIL @@ -57531,6 +63574,24 @@ [:stage="COMPUTE"] expected: FAIL + [:stage="VERTEX";awaitLost=true] + expected: FAIL + + [:stage="VERTEX";awaitLost=false] + expected: FAIL + + [:stage="FRAGMENT";awaitLost=true] + expected: FAIL + + [:stage="FRAGMENT";awaitLost=false] + expected: FAIL + + [:stage="COMPUTE";awaitLost=true] + expected: FAIL + + [:stage="COMPUTE";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,fwidth:f32:*] [:inputSource="const";vectorize="_undef_"] @@ -57759,56 +63820,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,asinh:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,setPipeline:pipeline,device_mismatch:*] [:] expected: FAIL @@ -58279,6 +64290,9 @@ [:format="rgb9e5ufloat"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,normalize:f32_vec3:*] [:inputSource="const"] @@ -58598,6 +64612,18 @@ [:inputSource="storage_rw";vectorize=4] expected: FAIL + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,copyBufferToBuffer:buffer_usage:*] [:] @@ -59423,56 +65449,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,acosh:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,u32_arithmetic:division:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -59582,56 +65558,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,unary,bool_conversion:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,rendering,color_target_state:blend_constant,setting:*] [:] expected: FAIL @@ -60611,6 +66537,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_store:*] [:memType="non_atomic_storage"] @@ -60694,56 +66716,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,exp2:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,f32_matrix_scalar_multiplication:matrix_scalar:*] [:inputSource="const";cols=2;rows=2] expected: FAIL @@ -67401,6 +73373,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,queries,resolveQuerySet:first_query_and_query_count:*] [:] @@ -67489,56 +73557,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,step:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:queue,writeTexture,2d,compressed_format:*] [:format="bc1-rgba-unorm"] expected: FAIL @@ -67582,6 +73600,90 @@ [:format="bc7-rgba-unorm-srgb"] expected: FAIL + [:format="bc1-rgba-unorm";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureNumLevels:depth:*] [:texture_type="texture_depth_2d"] @@ -68666,20 +74768,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_vec4_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:fragment_builtin_values:*] [:builtin="position";type="vec4%3Cf32%3E"] expected: FAIL @@ -68874,56 +74962,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,sign:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_type_matches_attribute_format:*] [:format="uint8x2"] expected: FAIL @@ -69203,6 +75241,12 @@ [:colorFormat="rgb10a2unorm";storeOperation="store"] expected: FAIL + [:colorFormat="rgb10a2uint";storeOperation="discard"] + expected: FAIL + + [:colorFormat="rgb10a2uint";storeOperation="store"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,rendering,draw:default_arguments:*] [:mode="draw"] @@ -69830,6 +75874,186 @@ [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,rendering,depth:reverse_depth:*] [:reversed=false] @@ -70919,20 +77143,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_vec2_whole:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,buffers,map:mapAsync,read:*] [:mapAsyncRegionLeft="default-expand";mapAsyncRegionRight="default-expand"] expected: FAIL @@ -71020,8 +77230,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,rg11b10ufloat_renderable:create_render_pipeline:*] - [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxSampledTexturesPerShaderStage:createBindGroupLayout,at_over:*] [:limitTest="atDefault";testValueName="atLimit";visibility=1;order="forward"] expected: FAIL @@ -71790,6 +77998,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureGatherCompare:sampled_array_2d_coords:*] [:] @@ -73283,20 +79587,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_vec4_exp:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,createPipelineLayout:number_of_bind_group_layouts_exceeds_the_maximum_value:*] [:] expected: FAIL @@ -74027,6 +80317,228 @@ [:format="rgb9e5ufloat"] expected: FAIL + [:format="r8unorm";awaitLost=true] + expected: FAIL + + [:format="r8unorm";awaitLost=false] + expected: FAIL + + [:format="r8snorm";awaitLost=true] + expected: FAIL + + [:format="r8snorm";awaitLost=false] + expected: FAIL + + [:format="r8uint";awaitLost=true] + expected: FAIL + + [:format="r8uint";awaitLost=false] + expected: FAIL + + [:format="r8sint";awaitLost=true] + expected: FAIL + + [:format="r8sint";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";awaitLost=false] + expected: FAIL + + [:format="rg8uint";awaitLost=true] + expected: FAIL + + [:format="rg8uint";awaitLost=false] + expected: FAIL + + [:format="rg8sint";awaitLost=true] + expected: FAIL + + [:format="rg8sint";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="r16uint";awaitLost=true] + expected: FAIL + + [:format="r16uint";awaitLost=false] + expected: FAIL + + [:format="r16sint";awaitLost=true] + expected: FAIL + + [:format="r16sint";awaitLost=false] + expected: FAIL + + [:format="r16float";awaitLost=true] + expected: FAIL + + [:format="r16float";awaitLost=false] + expected: FAIL + + [:format="rg16uint";awaitLost=true] + expected: FAIL + + [:format="rg16uint";awaitLost=false] + expected: FAIL + + [:format="rg16sint";awaitLost=true] + expected: FAIL + + [:format="rg16sint";awaitLost=false] + expected: FAIL + + [:format="rg16float";awaitLost=true] + expected: FAIL + + [:format="rg16float";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";awaitLost=false] + expected: FAIL + + [:format="rgba16float";awaitLost=true] + expected: FAIL + + [:format="rgba16float";awaitLost=false] + expected: FAIL + + [:format="r32uint";awaitLost=true] + expected: FAIL + + [:format="r32uint";awaitLost=false] + expected: FAIL + + [:format="r32sint";awaitLost=true] + expected: FAIL + + [:format="r32sint";awaitLost=false] + expected: FAIL + + [:format="r32float";awaitLost=true] + expected: FAIL + + [:format="r32float";awaitLost=false] + expected: FAIL + + [:format="rg32uint";awaitLost=true] + expected: FAIL + + [:format="rg32uint";awaitLost=false] + expected: FAIL + + [:format="rg32sint";awaitLost=true] + expected: FAIL + + [:format="rg32sint";awaitLost=false] + expected: FAIL + + [:format="rg32float";awaitLost=true] + expected: FAIL + + [:format="rg32float";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";awaitLost=false] + expected: FAIL + + [:format="rgba32float";awaitLost=true] + expected: FAIL + + [:format="rgba32float";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,binary,u32_arithmetic:multiplication_compound:*] [:inputSource="const";vectorize="_undef_"] @@ -75258,6 +81770,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_dimension:*] [:usage=4;viewDimension="1d"] @@ -75291,8 +81815,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_enable:*] - [cts.https.html?q=webgpu:api,validation,encoding,render_bundle:color_formats_mismatch:*] [:bundleFormats=["bgra8unorm","rg8unorm"\];passFormats=["bgra8unorm","rg8unorm"\]] expected: FAIL @@ -75791,56 +82313,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,sinh:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxColorAttachments:beginRenderPass,at_over:*] [:limitTest="atDefault";testValueName="atLimit"] expected: FAIL @@ -76982,6 +83454,33 @@ [:dimension="3d";readMethod="Sample";format="rgb9e5ufloat"] expected: FAIL + [:dimension="1d";readMethod="CopyToBuffer";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";readMethod="CopyToTexture";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";readMethod="Sample";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";readMethod="CopyToBuffer";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";readMethod="CopyToTexture";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";readMethod="Sample";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";readMethod="CopyToBuffer";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";readMethod="CopyToTexture";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";readMethod="Sample";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,vertex_state,correctness:vertex_buffer_used_multiple_times_overlapped:*] [:format="uint8x2"] @@ -78493,6 +84992,33 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot:i32:*] [:inputSource="const"] @@ -78858,56 +85384,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atan:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,cross:abstract_float:*] [:inputSource="const"] expected: FAIL @@ -79064,6 +85540,9 @@ [:sourceType="VideoFrame"] expected: FAIL + [:] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureGather:sampled_3d_coords:*] [:] @@ -79211,6 +85690,12 @@ [:colorAttachmentsCount=9] expected: FAIL + [:colorAttachmentsCountVariant={"mult":1,"add":0}] + expected: FAIL + + [:colorAttachmentsCountVariant={"mult":1,"add":1}] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxComputeWorkgroupSizeX:createComputePipeline,at_over:*] [:limitTest="atDefault";testValueName="atLimit";async=false] @@ -81011,8 +87496,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:less_than:*] - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureGather:depth_2d_coords:*] [:] expected: FAIL @@ -81640,6 +88123,9 @@ [:format="bc7-rgba-unorm-srgb"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,bitcast:f32_to_vec2h:*] [:inputSource="const";vectorize="_undef_";alias=false] @@ -81893,6 +88379,9 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,fract:f32:*] [:inputSource="const";vectorize="_undef_"] @@ -81944,8 +88433,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,rg11b10ufloat_renderable:begin_render_pass_msaa_and_resolve:*] - [cts.https.html?q=webgpu:api,operation,pipeline,default_layout:incompatible_with_explicit:*] [:] expected: FAIL @@ -82126,56 +88613,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,degrees:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,shadow:for_loop:*] [:] expected: FAIL @@ -82214,6 +88651,9 @@ [:format="rgba32uint"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxDynamicUniformBuffersPerPipelineLayout:createBindGroupLayout,at_over:*] [:limitTest="atDefault";testValueName="atLimit";visibility=1] @@ -82534,6 +88974,198 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="r8unorm";awaitLost=true] + expected: FAIL + + [:format="r8unorm";awaitLost=false] + expected: FAIL + + [:format="r8uint";awaitLost=true] + expected: FAIL + + [:format="r8uint";awaitLost=false] + expected: FAIL + + [:format="r8sint";awaitLost=true] + expected: FAIL + + [:format="r8sint";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";awaitLost=false] + expected: FAIL + + [:format="rg8uint";awaitLost=true] + expected: FAIL + + [:format="rg8uint";awaitLost=false] + expected: FAIL + + [:format="rg8sint";awaitLost=true] + expected: FAIL + + [:format="rg8sint";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";awaitLost=false] + expected: FAIL + + [:format="r16uint";awaitLost=true] + expected: FAIL + + [:format="r16uint";awaitLost=false] + expected: FAIL + + [:format="r16sint";awaitLost=true] + expected: FAIL + + [:format="r16sint";awaitLost=false] + expected: FAIL + + [:format="r16float";awaitLost=true] + expected: FAIL + + [:format="r16float";awaitLost=false] + expected: FAIL + + [:format="rg16uint";awaitLost=true] + expected: FAIL + + [:format="rg16uint";awaitLost=false] + expected: FAIL + + [:format="rg16sint";awaitLost=true] + expected: FAIL + + [:format="rg16sint";awaitLost=false] + expected: FAIL + + [:format="rg16float";awaitLost=true] + expected: FAIL + + [:format="rg16float";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";awaitLost=false] + expected: FAIL + + [:format="rgba16float";awaitLost=true] + expected: FAIL + + [:format="rgba16float";awaitLost=false] + expected: FAIL + + [:format="r32uint";awaitLost=true] + expected: FAIL + + [:format="r32uint";awaitLost=false] + expected: FAIL + + [:format="r32sint";awaitLost=true] + expected: FAIL + + [:format="r32sint";awaitLost=false] + expected: FAIL + + [:format="r32float";awaitLost=true] + expected: FAIL + + [:format="r32float";awaitLost=false] + expected: FAIL + + [:format="rg32uint";awaitLost=true] + expected: FAIL + + [:format="rg32uint";awaitLost=false] + expected: FAIL + + [:format="rg32sint";awaitLost=true] + expected: FAIL + + [:format="rg32sint";awaitLost=false] + expected: FAIL + + [:format="rg32float";awaitLost=true] + expected: FAIL + + [:format="rg32float";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";awaitLost=false] + expected: FAIL + + [:format="rgba32float";awaitLost=true] + expected: FAIL + + [:format="rgba32float";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,length:f32_vec4:*] [:inputSource="const"] @@ -84511,56 +91143,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,sqrt:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,buffers,map:mappedAtCreation:*] [:mappable=false] expected: FAIL @@ -84642,6 +91224,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,comments:unterminated_block_comment:*] [:terminated=true] @@ -84805,6 +91399,18 @@ [:sourceType="VideoFrame"] expected: FAIL + [:sourceType="VideoElement";awaitLost=true] + expected: FAIL + + [:sourceType="VideoElement";awaitLost=false] + expected: FAIL + + [:sourceType="VideoFrame";awaitLost=true] + expected: FAIL + + [:sourceType="VideoFrame";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,binary,f32_matrix_scalar_multiplication:scalar_matrix:*] [:inputSource="const";cols=2;rows=2] @@ -85945,6 +92551,66 @@ [:resourceType="storageTex";entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}}] expected: FAIL + [:resourceType="uniformBuf";entry={"buffer":{"type":"uniform"}};awaitLost=true] + expected: FAIL + + [:resourceType="uniformBuf";entry={"buffer":{"type":"uniform"}};awaitLost=false] + expected: FAIL + + [:resourceType="storageBuf";entry={"buffer":{"type":"storage"}};awaitLost=true] + expected: FAIL + + [:resourceType="storageBuf";entry={"buffer":{"type":"storage"}};awaitLost=false] + expected: FAIL + + [:resourceType="storageBuf";entry={"buffer":{"type":"read-only-storage"}};awaitLost=true] + expected: FAIL + + [:resourceType="storageBuf";entry={"buffer":{"type":"read-only-storage"}};awaitLost=false] + expected: FAIL + + [:resourceType="filtSamp";entry={"sampler":{"type":"filtering"}};awaitLost=true] + expected: FAIL + + [:resourceType="filtSamp";entry={"sampler":{"type":"filtering"}};awaitLost=false] + expected: FAIL + + [:resourceType="nonFiltSamp";entry={"sampler":{"type":"filtering"}};awaitLost=true] + expected: FAIL + + [:resourceType="nonFiltSamp";entry={"sampler":{"type":"filtering"}};awaitLost=false] + expected: FAIL + + [:resourceType="nonFiltSamp";entry={"sampler":{"type":"non-filtering"}};awaitLost=true] + expected: FAIL + + [:resourceType="nonFiltSamp";entry={"sampler":{"type":"non-filtering"}};awaitLost=false] + expected: FAIL + + [:resourceType="compareSamp";entry={"sampler":{"type":"comparison"}};awaitLost=true] + expected: FAIL + + [:resourceType="compareSamp";entry={"sampler":{"type":"comparison"}};awaitLost=false] + expected: FAIL + + [:resourceType="sampledTex";entry={"texture":{"multisampled":false}};awaitLost=true] + expected: FAIL + + [:resourceType="sampledTex";entry={"texture":{"multisampled":false}};awaitLost=false] + expected: FAIL + + [:resourceType="sampledTexMS";entry={"texture":{"multisampled":true,"sampleType":"unfilterable-float"}};awaitLost=true] + expected: FAIL + + [:resourceType="sampledTexMS";entry={"texture":{"multisampled":true,"sampleType":"unfilterable-float"}};awaitLost=false] + expected: FAIL + + [:resourceType="storageTex";entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}};awaitLost=true] + expected: FAIL + + [:resourceType="storageTex";entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}};awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,render_pass,attachment_compatibility:render_pass_or_bundle_and_pipeline,color_count:*] [:encoderType="render%20pass"] @@ -86161,6 +92827,9 @@ [:format="bc7-rgba-unorm-srgb"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createTexture,2d,compressed_format:*] [:format="bc1-rgba-unorm"] @@ -86205,6 +92874,342 @@ [:format="bc7-rgba-unorm-srgb"] expected: FAIL + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc4-r-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc4-r-snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc5-rg-snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-ufloat";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc6h-rgb-float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,createView:cube_faces_square:*] [:dimension="2d";size=[4,4,6\]] @@ -86433,6 +93438,9 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,copyBufferToBuffer:copy_overflow:*] [:] @@ -86444,56 +93452,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,radians:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createTexture,2d,uncompressed_format:*] [:format="r8unorm"] expected: FAIL @@ -86603,6 +93561,2046 @@ [:format="rgb9e5ufloat"] expected: FAIL + [:format="r8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r8sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg8sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8snorm";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba8sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="bgra8unorm-srgb";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r16float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg16float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba16float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="r32float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg32float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32sint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="storage";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgba32float";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2uint";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb10a2unorm";usageType="render";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rg11b10ufloat";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="none";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="none";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="dst";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="dst";awaitLost=false] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src-dest";awaitLost=true] + expected: FAIL + + [:format="rgb9e5ufloat";usageType="texture";usageCopy="src-dest";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,adapter,requestDevice:stale:*] [:] @@ -86984,6 +95982,198 @@ [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atan:f32:*] [:inputSource="const";vectorize="_undef_"] @@ -87222,6 +96412,12 @@ [:isAsync=true;format="rgb10a2unorm"] expected: FAIL + [:isAsync=false;format="rgb10a2uint"] + expected: FAIL + + [:isAsync=true;format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_limit:*] [:] @@ -87335,6 +96531,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,sampling,anisotropy:anisotropic_filter_mipmap_color:*] [:maxAnisotropy=1] @@ -88208,20 +97500,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_vec2_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,buffer,create:usage:*] [:usage1=0;usage2=0] expected: FAIL @@ -89107,6 +98385,198 @@ [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,queue,buffer_mapped:copyBufferToBuffer:*] [:] @@ -89177,6 +98647,12 @@ [:] expected: FAIL + [:awaitLost=true] + expected: FAIL + + [:awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_passOp_operation:*] [:format="stencil8";passOp="keep";initialStencil=1] @@ -89351,56 +98827,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,unary,u32_conversion:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,validation,parse,align:multi_align:*] [:multi=true] expected: FAIL @@ -89464,8 +98890,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:greater_equals:*] - [cts.https.html?q=webgpu:api,validation,resource_usages,buffer,in_pass_misc:subresources,buffer_usages_in_copy_and_pass:*] [:usage0="copy-src";usage1="copy-src";pass="render"] expected: FAIL @@ -90026,104 +99450,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,bitcast:f16_to_f16:*] - [:inputSource="const";vectorize="_undef_";alias=false] - expected: FAIL - - [:inputSource="const";vectorize="_undef_";alias=true] - expected: FAIL - - [:inputSource="const";vectorize=2;alias=false] - expected: FAIL - - [:inputSource="const";vectorize=2;alias=true] - expected: FAIL - - [:inputSource="const";vectorize=3;alias=false] - expected: FAIL - - [:inputSource="const";vectorize=3;alias=true] - expected: FAIL - - [:inputSource="const";vectorize=4;alias=false] - expected: FAIL - - [:inputSource="const";vectorize=4;alias=true] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_";alias=false] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_";alias=true] - expected: FAIL - - [:inputSource="uniform";vectorize=2;alias=false] - expected: FAIL - - [:inputSource="uniform";vectorize=2;alias=true] - expected: FAIL - - [:inputSource="uniform";vectorize=3;alias=false] - expected: FAIL - - [:inputSource="uniform";vectorize=3;alias=true] - expected: FAIL - - [:inputSource="uniform";vectorize=4;alias=false] - expected: FAIL - - [:inputSource="uniform";vectorize=4;alias=true] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_";alias=false] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_";alias=true] - expected: FAIL - - [:inputSource="storage_r";vectorize=2;alias=false] - expected: FAIL - - [:inputSource="storage_r";vectorize=2;alias=true] - expected: FAIL - - [:inputSource="storage_r";vectorize=3;alias=false] - expected: FAIL - - [:inputSource="storage_r";vectorize=3;alias=true] - expected: FAIL - - [:inputSource="storage_r";vectorize=4;alias=false] - expected: FAIL - - [:inputSource="storage_r";vectorize=4;alias=true] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_";alias=false] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_";alias=true] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2;alias=false] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2;alias=true] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3;alias=false] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3;alias=true] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4;alias=false] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4;alias=true] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,texture_usages_in_copy_and_render_pass:*] [:usage0="copy-src";usage1="copy-src"] expected: FAIL @@ -90174,63 +99500,11 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,tanh:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_discard:*] [:] expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:not_equals:*] - [cts.https.html?q=webgpu:examples:basic:*] [:] expected: FAIL @@ -90712,8 +99986,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:greater_than:*] - [cts.https.html?q=webgpu:api,operation,onSubmittedWorkDone:many,parallel:*] [:] expected: FAIL @@ -93458,6 +102730,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureNumLayers:storage:*] [:] @@ -94653,20 +104021,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_vec3_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,compute_pipeline:limits,invocations_per_workgroup,each_component:*] [:isAsync=true;size=[64\]] expected: FAIL @@ -94793,6 +104147,60 @@ [:entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}}] expected: FAIL + [:entry={"buffer":{"type":"uniform"}};awaitLost=true] + expected: FAIL + + [:entry={"buffer":{"type":"uniform"}};awaitLost=false] + expected: FAIL + + [:entry={"buffer":{"type":"storage"}};awaitLost=true] + expected: FAIL + + [:entry={"buffer":{"type":"storage"}};awaitLost=false] + expected: FAIL + + [:entry={"buffer":{"type":"read-only-storage"}};awaitLost=true] + expected: FAIL + + [:entry={"buffer":{"type":"read-only-storage"}};awaitLost=false] + expected: FAIL + + [:entry={"sampler":{"type":"comparison"}};awaitLost=true] + expected: FAIL + + [:entry={"sampler":{"type":"comparison"}};awaitLost=false] + expected: FAIL + + [:entry={"sampler":{"type":"filtering"}};awaitLost=true] + expected: FAIL + + [:entry={"sampler":{"type":"filtering"}};awaitLost=false] + expected: FAIL + + [:entry={"sampler":{"type":"non-filtering"}};awaitLost=true] + expected: FAIL + + [:entry={"sampler":{"type":"non-filtering"}};awaitLost=false] + expected: FAIL + + [:entry={"texture":{"multisampled":false}};awaitLost=true] + expected: FAIL + + [:entry={"texture":{"multisampled":false}};awaitLost=false] + expected: FAIL + + [:entry={"texture":{"multisampled":true,"sampleType":"unfilterable-float"}};awaitLost=true] + expected: FAIL + + [:entry={"texture":{"multisampled":true,"sampleType":"unfilterable-float"}};awaitLost=false] + expected: FAIL + + [:entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}};awaitLost=true] + expected: FAIL + + [:entry={"storageTexture":{"access":"write-only","format":"rgba8unorm"}};awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,rendering,depth:depth_compare_func:*] [:format="depth16unorm";depthCompare="never";depthClearValue=1] @@ -95156,20 +104564,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,cross:f16:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,compute_pipeline:overrides,workgroup_size,limits,workgroup_storage_size:*] [:isAsync=true] expected: FAIL @@ -95356,6 +104750,18 @@ [:isAsync=true;targetsLength=9] expected: FAIL + [:isAsync=false;targetsLengthVariant={"mult":1,"add":0}] + expected: FAIL + + [:isAsync=false;targetsLengthVariant={"mult":1,"add":1}] + expected: FAIL + + [:isAsync=true;targetsLengthVariant={"mult":1,"add":0}] + expected: FAIL + + [:isAsync=true;targetsLengthVariant={"mult":1,"add":1}] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,setVertexBuffer:slot:*] [:] @@ -95516,6 +104922,18 @@ [:inputSource="storage_rw";vectorize=4] expected: FAIL + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:type_and_sampling:*] [:stage="vertex";io="in";use_struct=true;type="";sampling=""] @@ -96785,6 +106203,30 @@ [:type="timestamp"] expected: FAIL + [:type="occlusion";stage="finish";awaitLost=true] + expected: FAIL + + [:type="occlusion";stage="finish";awaitLost=false] + expected: FAIL + + [:type="occlusion";stage="submit";awaitLost=true] + expected: FAIL + + [:type="occlusion";stage="submit";awaitLost=false] + expected: FAIL + + [:type="timestamp";stage="finish";awaitLost=true] + expected: FAIL + + [:type="timestamp";stage="finish";awaitLost=false] + expected: FAIL + + [:type="timestamp";stage="submit";awaitLost=true] + expected: FAIL + + [:type="timestamp";stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureNumLevels:sampled:*] [:texture_type="texture_1d"] @@ -96905,56 +106347,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,unary,f32_conversion:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,all:bool:*] [:inputSource="const";overload="scalar"] expected: FAIL @@ -97212,8 +106604,12 @@ [:isAsync=true;format="rgb10a2unorm"] expected: FAIL + [:isAsync=false;format="rgb10a2uint"] + expected: FAIL + + [:isAsync=true;format="rgb10a2uint"] + expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,binary,f16_comparison:less_equals:*] [cts.https.html?q=webgpu:shader,validation,parse,const_assert:parse:*] [:case="no_parentheses"] @@ -97384,6 +106780,18 @@ [:inputSource="storage_rw";vectorize=4] expected: FAIL + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,shader_module,entry_point:compute:*] [:isAsync=true;shaderModuleEntryPoint="main";stageEntryPoint="main"] @@ -97527,6 +106935,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,shader_io,builtins:missing_vertex_position:*] [:use_struct=true;attribute="%40builtin(position)"] @@ -98697,6 +108117,630 @@ [:orientation="flipY";srcDoFlipYDuringCopy=false;dstColorFormat="rgba32float";dstPremultiplied=false] expected: FAIL + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,image_copy,buffer_related:bytes_per_row_alignment:*] [:method="WriteTexture";format="r8unorm";dimension="1d"] @@ -99818,6 +109862,33 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,binary,u32_arithmetic:remainder_vector_scalar_compound:*] [:inputSource="const";vectorize_lhs=2] @@ -99933,6 +110004,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,discard:placement:*] [:place="compute"] @@ -102417,53 +112500,198 @@ [cts.https.html?q=webgpu:api,validation,render_pass,attachment_compatibility:render_pass_or_bundle_and_pipeline,color_sparse:*] + expected: TIMEOUT [:encoderType="render%20pass";attachmentCount=1] - expected: FAIL + expected: TIMEOUT [:encoderType="render%20pass";attachmentCount=2] - expected: FAIL + expected: NOTRUN [:encoderType="render%20pass";attachmentCount=3] - expected: FAIL + expected: NOTRUN [:encoderType="render%20pass";attachmentCount=4] - expected: FAIL + expected: NOTRUN [:encoderType="render%20pass";attachmentCount=5] - expected: FAIL + expected: NOTRUN [:encoderType="render%20pass";attachmentCount=6] - expected: FAIL + expected: NOTRUN [:encoderType="render%20pass";attachmentCount=7] - expected: FAIL + expected: NOTRUN [:encoderType="render%20pass";attachmentCount=8] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=1] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=2] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=3] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=4] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=5] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=6] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=7] - expected: FAIL + expected: NOTRUN [:encoderType="render%20bundle";attachmentCount=8] - expected: FAIL + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=9] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=10] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=11] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=12] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=13] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=14] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=15] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=16] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=17] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=18] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=19] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=20] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=21] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=22] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=23] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=24] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=25] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=26] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=27] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=28] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=29] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=30] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=31] + expected: NOTRUN + + [:encoderType="render%20pass";attachmentCount=32] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=9] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=10] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=11] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=12] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=13] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=14] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=15] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=16] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=17] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=18] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=19] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=20] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=21] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=22] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=23] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=24] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=25] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=26] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=27] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=28] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=29] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=30] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=31] + expected: NOTRUN + + [:encoderType="render%20bundle";attachmentCount=32] + expected: NOTRUN [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,setVertexBuffer:offset_alignment:*] @@ -105763,56 +115991,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atanh:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:examples:basic,builder_cases_subcases:*] [:x=1] expected: FAIL @@ -106374,6 +116552,12 @@ [:isAsync=true;format="bc7-rgba-unorm-srgb"] expected: FAIL + [:isAsync=false;format="rgb10a2uint"] + expected: FAIL + + [:isAsync=true;format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_func_decl:*] [:] @@ -108443,56 +118627,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,ldexp:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:bindings_in_bundle:*] [:type0="render-target";type1="sampled-texture"] expected: FAIL @@ -108528,8 +118662,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,rg11b10ufloat_renderable:begin_render_pass_single_sampled:*] - [cts.https.html?q=webgpu:shader,execution,flow_control,phony:phony_assign_call_nested_must_use:*] [:preventValueOptimizations=true] expected: FAIL @@ -108538,56 +118670,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,tan:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,operation,rendering,depth:depth_test_fail:*] [:secondDepth=1;lastDepth=2] expected: FAIL @@ -108723,70 +118805,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,cosh:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_whole:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,render_pass,attachment_compatibility:render_pass_and_bundle,color_sparse:*] [:attachmentCount=1] expected: FAIL @@ -108812,6 +118830,78 @@ [:attachmentCount=8] expected: FAIL + [:attachmentCount=9] + expected: FAIL + + [:attachmentCount=10] + expected: FAIL + + [:attachmentCount=11] + expected: FAIL + + [:attachmentCount=12] + expected: FAIL + + [:attachmentCount=13] + expected: FAIL + + [:attachmentCount=14] + expected: FAIL + + [:attachmentCount=15] + expected: FAIL + + [:attachmentCount=16] + expected: FAIL + + [:attachmentCount=17] + expected: FAIL + + [:attachmentCount=18] + expected: FAIL + + [:attachmentCount=19] + expected: FAIL + + [:attachmentCount=20] + expected: FAIL + + [:attachmentCount=21] + expected: FAIL + + [:attachmentCount=22] + expected: FAIL + + [:attachmentCount=23] + expected: FAIL + + [:attachmentCount=24] + expected: FAIL + + [:attachmentCount=25] + expected: FAIL + + [:attachmentCount=26] + expected: FAIL + + [:attachmentCount=27] + expected: FAIL + + [:attachmentCount=28] + expected: FAIL + + [:attachmentCount=29] + expected: FAIL + + [:attachmentCount=30] + expected: FAIL + + [:attachmentCount=31] + expected: FAIL + + [:attachmentCount=32] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,round:f32:*] [:inputSource="const";vectorize="_undef_"] @@ -108887,6 +118977,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,binary,f32_remainder:vector_scalar:*] [:inputSource="const";dim=2] @@ -109012,54 +119114,64 @@ [:canvasType="offscreen";contextType="webgpu"] expected: FAIL - -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,cos:f16:*] - [:inputSource="const";vectorize="_undef_"] + [:canvasType="onscreen";contextType="2d";awaitLost=true] expected: FAIL - [:inputSource="const";vectorize=2] + [:canvasType="onscreen";contextType="2d";awaitLost=false] expected: FAIL - [:inputSource="const";vectorize=3] + [:canvasType="onscreen";contextType="bitmaprenderer";awaitLost=true] expected: FAIL - [:inputSource="const";vectorize=4] + [:canvasType="onscreen";contextType="bitmaprenderer";awaitLost=false] expected: FAIL - [:inputSource="uniform";vectorize="_undef_"] + [:canvasType="onscreen";contextType="webgl";awaitLost=true] expected: FAIL - [:inputSource="uniform";vectorize=2] + [:canvasType="onscreen";contextType="webgl";awaitLost=false] expected: FAIL - [:inputSource="uniform";vectorize=3] + [:canvasType="onscreen";contextType="webgl2";awaitLost=true] expected: FAIL - [:inputSource="uniform";vectorize=4] + [:canvasType="onscreen";contextType="webgl2";awaitLost=false] expected: FAIL - [:inputSource="storage_r";vectorize="_undef_"] + [:canvasType="onscreen";contextType="webgpu";awaitLost=true] expected: FAIL - [:inputSource="storage_r";vectorize=2] + [:canvasType="onscreen";contextType="webgpu";awaitLost=false] expected: FAIL - [:inputSource="storage_r";vectorize=3] + [:canvasType="offscreen";contextType="2d";awaitLost=true] expected: FAIL - [:inputSource="storage_r";vectorize=4] + [:canvasType="offscreen";contextType="2d";awaitLost=false] expected: FAIL - [:inputSource="storage_rw";vectorize="_undef_"] + [:canvasType="offscreen";contextType="bitmaprenderer";awaitLost=true] expected: FAIL - [:inputSource="storage_rw";vectorize=2] + [:canvasType="offscreen";contextType="bitmaprenderer";awaitLost=false] expected: FAIL - [:inputSource="storage_rw";vectorize=3] + [:canvasType="offscreen";contextType="webgl";awaitLost=true] expected: FAIL - [:inputSource="storage_rw";vectorize=4] + [:canvasType="offscreen";contextType="webgl";awaitLost=false] + expected: FAIL + + [:canvasType="offscreen";contextType="webgl2";awaitLost=true] + expected: FAIL + + [:canvasType="offscreen";contextType="webgl2";awaitLost=false] + expected: FAIL + + [:canvasType="offscreen";contextType="webgpu";awaitLost=true] + expected: FAIL + + [:canvasType="offscreen";contextType="webgpu";awaitLost=false] expected: FAIL @@ -109117,56 +119229,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,fma:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,binary,i32_arithmetic:multiplication_vector_scalar_compound:*] [:inputSource="const";vectorize_lhs=2] expected: FAIL @@ -109723,6 +119785,18 @@ [:dimension="3d";format="rgb9e5ufloat"] expected: FAIL + [:dimension="_undef_";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility:*] [:visibility=0] @@ -109990,8 +120064,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,bgra8unorm_storage:create_shader_module_with_bgra8unorm_storage:*] - [cts.https.html?q=webgpu:shader,execution,expression,binary,bitwise_shift:shift_left_concrete_compound:*] [:type="i32";inputSource="const";vectorize="_undef_"] expected: FAIL @@ -111846,6 +121918,33 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,buffer,mapping:getMappedRange,subrange,mappedAtCreation:*] [:] @@ -114110,8 +124209,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,render_pipeline,overrides:value,validation_error,f16,vertex:*] - [cts.https.html?q=webgpu:api,validation,createBindGroup:buffer,resource_state:*] [:] expected: FAIL @@ -115578,56 +125675,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,acos:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_continuing:*] [:] expected: FAIL @@ -115838,6 +125885,42 @@ [:dispatchType="indirect";largeDimValue=4294967295] expected: FAIL + [:dispatchType="direct";largeDimValueVariant={"mult":0,"add":0}] + expected: FAIL + + [:dispatchType="direct";largeDimValueVariant={"mult":0,"add":1}] + expected: FAIL + + [:dispatchType="direct";largeDimValueVariant={"mult":1,"add":0}] + expected: FAIL + + [:dispatchType="direct";largeDimValueVariant={"mult":1,"add":1}] + expected: FAIL + + [:dispatchType="direct";largeDimValueVariant={"mult":0,"add":2147483647}] + expected: FAIL + + [:dispatchType="direct";largeDimValueVariant={"mult":0,"add":4294967295}] + expected: FAIL + + [:dispatchType="indirect";largeDimValueVariant={"mult":0,"add":0}] + expected: FAIL + + [:dispatchType="indirect";largeDimValueVariant={"mult":0,"add":1}] + expected: FAIL + + [:dispatchType="indirect";largeDimValueVariant={"mult":1,"add":0}] + expected: FAIL + + [:dispatchType="indirect";largeDimValueVariant={"mult":1,"add":1}] + expected: FAIL + + [:dispatchType="indirect";largeDimValueVariant={"mult":0,"add":2147483647}] + expected: FAIL + + [:dispatchType="indirect";largeDimValueVariant={"mult":0,"add":4294967295}] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxStorageBuffersPerShaderStage:createBindGroupLayout,at_over:*] [:limitTest="atDefault";testValueName="atLimit";visibility=1;type="storage";order="forward"] @@ -117490,56 +127573,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,smoothstep:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxColorAttachmentBytesPerSample:createRenderBundle,at_over:*] [:limitTest="atDefault";testValueName="atLimit";sampleCount=1;interleaveFormat="rgba16float"] expected: FAIL @@ -117961,56 +127994,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,round:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,expression,unary,i32_complement:i32_complement:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -118168,6 +128151,54 @@ [:orientation="flipY";srcDoFlipYDuringCopy=false;dstPremultiplied=false] expected: FAIL + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,tanh:f32:*] [:inputSource="const";vectorize="_undef_"] @@ -119079,6 +129110,12 @@ [:canvasType="offscreen";format="bc7-rgba-unorm-srgb"] expected: FAIL + [:canvasType="onscreen";format="rgb10a2uint"] + expected: FAIL + + [:canvasType="offscreen";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,reflection:texture_reflection_attributes:*] [:] @@ -119194,56 +129231,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,log:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,createBindGroupLayout:duplicate_bindings:*] [:] expected: FAIL @@ -120649,6 +130636,276 @@ [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="WriteTexture";checkMethod="PartialCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba8snorm";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba16float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="r32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgba32float";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="1d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="2d"] + expected: FAIL + + [:initMethod="CopyB2T";checkMethod="FullCopyT2B";format="rg11b10ufloat";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,adapter,requestDevice:limit,worse_than_default:*] [:limit="maxTextureDimension1D"] @@ -120889,6 +131146,9 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,sampling,anisotropy:anisotropic_filter_checkerboard:*] [:] @@ -120904,6 +131164,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,image_copy,buffer_related:buffer_state:*] [:method="CopyB2T";state="valid"] @@ -125175,6 +135447,33 @@ [:method="CopyT2B";format="bc7-rgba-unorm-srgb";dimension="2d"] expected: FAIL + [:method="WriteTexture";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="WriteTexture";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyB2T";format="rgb10a2uint";dimension="3d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="1d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="2d"] + expected: FAIL + + [:method="CopyT2B";format="rgb10a2uint";dimension="3d"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,flow_control,for:for_break:*] [:preventValueOptimizations=true] @@ -126843,8 +137142,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,bgra8unorm_storage:create_texture:*] - [cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility,VERTEX_shader_stage_storage_texture_access:*] [:shaderStage=0] expected: FAIL @@ -126980,6 +137277,12 @@ [:] expected: FAIL + [:awaitLost=true] + expected: FAIL + + [:awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_component_type:*] [:sampleType="float"] @@ -127400,6 +137703,9 @@ [:val="0x1.0p%2B999999h"] expected: FAIL + [:val="1.1e!2h"] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,binary,u32_arithmetic:remainder_vector_scalar:*] [:inputSource="const";vectorize_lhs=2] @@ -127567,56 +137873,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,pow:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,createTexture:mipLevelCount,format:*] [:dimension="_undef_";format="r8unorm"] expected: FAIL @@ -128170,6 +138426,18 @@ [:dimension="3d";format="rgb9e5ufloat"] expected: FAIL + [:dimension="_undef_";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,memory_sync,buffer,multiple_buffers:wr:*] [:boundary="queue-op";readOp="b2b-copy";readContext="command-encoder";writeOp="write-buffer";writeContext="queue"] @@ -129049,6 +139317,18 @@ [:dimension="3d";format="rgb9e5ufloat"] expected: FAIL + [:dimension="_undef_";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,render_pass,attachment_compatibility:render_pass_or_bundle_and_pipeline,depth_stencil_read_only_write_state:*] [:encoderType="render%20pass";format="_undef_"] @@ -129150,6 +139430,18 @@ [:] expected: FAIL + [:stage="finish";awaitLost=true] + expected: FAIL + + [:stage="finish";awaitLost=false] + expected: FAIL + + [:stage="submit";awaitLost=true] + expected: FAIL + + [:stage="submit";awaitLost=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,flow_control,eval_order:nested_struct_constructor:*] [:] @@ -129363,18 +139655,196 @@ [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarKind="i32"] expected: FAIL - -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_fract:*] - [:inputSource="const"] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] expected: FAIL - [:inputSource="uniform"] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] expected: FAIL - [:inputSource="storage_r"] + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] expected: FAIL - [:inputSource="storage_rw"] + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] expected: FAIL @@ -129561,6 +140031,9 @@ [:format="rgb10a2unorm"] expected: FAIL + [:format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,encoding,cmds,render,dynamic_state:setScissorRect,x_y_width_height_nonnegative:*] [:] @@ -130699,20 +141172,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_vec4_fract:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:api,validation,render_pipeline,shader_module:invalid,vertex:*] [:isAsync=true;isVertexShaderValid=true] expected: FAIL @@ -131214,6 +141673,102 @@ [:alpha="premultiply";orientation="flipY";srcDoFlipYDuringCopy=false;dstPremultiplied=false] expected: FAIL + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstPremultiplied=false] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_if:*] [:] @@ -131467,6 +142022,198 @@ [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,render_pipeline,primitive_topology:unaligned_vertex_count:*] [:topology="line-list";indirect=false;drawCount=5] @@ -133206,6 +143953,1050 @@ [:storageClass="function";workgroupSize=[1,1,1\];batch__=29] expected: FAIL + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,1\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,32,1\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[64,1,1\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,48\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,47,1\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[33,1,1\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[1,1,63\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[8,8,2\];batch__=31] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=0] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=1] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=2] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=3] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=4] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=5] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=6] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=7] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=8] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=9] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=10] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=11] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=12] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=13] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=14] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=15] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=16] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=17] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=18] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=19] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=20] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=21] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=22] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=23] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=24] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=25] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=26] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=27] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=28] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=29] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=30] + expected: FAIL + + [:addressSpace="workgroup";workgroupSize=[7,7,3\];batch__=31] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=0] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=1] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=2] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=3] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=4] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=5] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=6] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=7] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=8] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=9] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=10] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=11] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=12] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=13] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=14] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=15] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=16] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=17] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=18] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=19] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=20] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=21] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=22] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=23] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=24] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=25] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=26] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=27] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=28] + expected: FAIL + + [:addressSpace="private";workgroupSize=[1,1,1\];batch__=29] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=0] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=1] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=2] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=3] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=4] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=5] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=6] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=7] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=8] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=9] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=10] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=11] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=12] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=13] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=14] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=15] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=16] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=17] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=18] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=19] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=20] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=21] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=22] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=23] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=24] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=25] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=26] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=27] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=28] + expected: FAIL + + [:addressSpace="function";workgroupSize=[1,1,1\];batch__=29] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,flow_control,eval_order:array_index:*] [:] @@ -136314,6 +148105,2328 @@ [:dimension="2d";format="depth32float-stencil8";size=[1,1,257\]] expected: FAIL + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="_undef_";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba8snorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba8uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba8sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="bgra8unorm-srgb";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba16uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba16sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba16float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="r32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba32uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba32sint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgba32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgb10a2unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rg11b10ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="rgb9e5ufloat";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="depth16unorm";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="depth32float";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="depth24plus-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":1,"add":-1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":1,"add":0},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":1,"add":1},{"mult":0,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":-1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":0},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":1,"add":1},{"mult":0,"add":1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":-1}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":0}\]] + expected: FAIL + + [:dimension="2d";format="depth32float-stencil8";sizeVariant=[{"mult":0,"add":1},{"mult":0,"add":1},{"mult":1,"add":1}\]] + expected: FAIL + [cts.https.html?q=webgpu:shader,execution,expression,unary,f32_conversion:bool:*] [:inputSource="const";vectorize="_undef_"] @@ -136365,20 +150478,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,frexp:f16_vec2_exp:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:web_platform,external_texture,video:importExternalTexture,compute:*] [:sourceType="VideoElement";videoName="four-colors-vp8-bt601.webm"] expected: FAIL @@ -136416,8 +150515,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,validation,parse,enable:enable:*] - [cts.https.html?q=webgpu:api,validation,queue,copyToTexture,CopyExternalImageToTexture:OOB,destination:*] [:] expected: FAIL @@ -137112,6 +151209,18 @@ [:dimension="3d";format="bc7-rgba-unorm-srgb"] expected: FAIL + [:dimension="_undef_";format="rgb10a2uint"] + expected: FAIL + + [:dimension="1d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="2d";format="rgb10a2uint"] + expected: FAIL + + [:dimension="3d";format="rgb10a2uint"] + expected: FAIL + [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_while_break:*] [:] @@ -138709,6 +152818,1290 @@ [:format="sint32x4";arrayStride=2048;offset=2030] expected: FAIL + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="unorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="unorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":1}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-2}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-3}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="snorm8x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="snorm8x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="uint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="sint16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="unorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="unorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="snorm16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="snorm16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="float16x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="float16x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="float32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="float32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":6}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":12}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-14}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":6}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":12}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="float32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-14}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":16}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-24}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-20}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":16}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-24}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-20}] + expected: FAIL + + [:format="float32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="uint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="uint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":6}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":12}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-14}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":6}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":12}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="uint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-14}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":16}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-24}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-20}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":16}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-24}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-20}] + expected: FAIL + + [:format="uint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-4}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-6}] + expected: FAIL + + [:format="sint32";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-8}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="sint32x2";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-10}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":6}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":12}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-14}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":6}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":12}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-12}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="sint32x3";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-14}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":16}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-24}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-20}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":0,"add":256};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":0}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":8}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":16}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":2}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":0,"add":4}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-16}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-24}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-20}] + expected: FAIL + + [:format="sint32x4";arrayStrideVariant={"mult":1,"add":0};offsetVariant={"mult":1,"add":-18}] + expected: FAIL + [cts.https.html?q=webgpu:web_platform,canvas,getCurrentTexture:single_frames:*] [:canvasType="onscreen"] @@ -139343,6 +154736,1254 @@ [:alpha="premultiply";orientation="flipY";srcDoFlipYDuringCopy=false;dstColorFormat="rgba32float";dstPremultiplied=false] expected: FAIL + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="none";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="none";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="none";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=true;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:alpha="premultiply";orientation="flipY";colorSpaceConversion="default";srcFlipYInCopy=false;dstFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + [cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_bind_group_on_same_index_color_texture:*] [:useDifferentTextureAsTexture2=true;baseLayer2=0;view2Binding="texture";hasConflict=true] @@ -139482,20 +156123,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:f16_vec3_whole:*] - [:inputSource="const"] - expected: FAIL - - [:inputSource="uniform"] - expected: FAIL - - [:inputSource="storage_r"] - expected: FAIL - - [:inputSource="storage_rw"] - expected: FAIL - - [cts.https.html?q=webgpu:shader,execution,flow_control,for:for_complex_continuing:*] [:preventValueOptimizations=true] expected: FAIL @@ -140123,6 +156750,102 @@ [:workgroupSize=64;dispatchSize=16;scalarKind="i32"] expected: FAIL + [:workgroupSize=1;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;scalarType="i32"] + expected: FAIL + [cts.https.html?q=webgpu:api,operation,buffers,map_detach:while_mapped:*] [:] @@ -140179,56 +156902,6 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,ceil:f16:*] - [:inputSource="const";vectorize="_undef_"] - expected: FAIL - - [:inputSource="const";vectorize=2] - expected: FAIL - - [:inputSource="const";vectorize=3] - expected: FAIL - - [:inputSource="const";vectorize=4] - expected: FAIL - - [:inputSource="uniform";vectorize="_undef_"] - expected: FAIL - - [:inputSource="uniform";vectorize=2] - expected: FAIL - - [:inputSource="uniform";vectorize=3] - expected: FAIL - - [:inputSource="uniform";vectorize=4] - expected: FAIL - - [:inputSource="storage_r";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_r";vectorize=2] - expected: FAIL - - [:inputSource="storage_r";vectorize=3] - expected: FAIL - - [:inputSource="storage_r";vectorize=4] - expected: FAIL - - [:inputSource="storage_rw";vectorize="_undef_"] - expected: FAIL - - [:inputSource="storage_rw";vectorize=2] - expected: FAIL - - [:inputSource="storage_rw";vectorize=3] - expected: FAIL - - [:inputSource="storage_rw";vectorize=4] - expected: FAIL - - [cts.https.html?q=webgpu:shader,validation,parse,semicolon:after_fn_const_decl:*] [:] expected: FAIL @@ -141098,8 +157771,6 @@ expected: FAIL -[cts.https.html?q=webgpu:api,validation,texture,bgra8unorm_storage:configure_storage_usage_on_canvas_context_with_bgra8unorm_storage:*] - [cts.https.html?q=webgpu:shader,execution,expression,call,builtin,clamp:i32:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -141490,7 +158161,7068 @@ expected: FAIL -[cts.https.html?q=webgpu:shader,execution,expression,unary,i32_conversion:f16:*] +[cts.https.html?q=webgpu:shader,execution,expression,unary,af_arithmetic:negation:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:one_pointer_one_module_scope:*] + [:a_use="no_access";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="return";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="return";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="return";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="return";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="return";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="return";aliased=false] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="compound_assign_lhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="return";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="return";aliased=false] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="compound_assign_rhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="return";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="return";aliased=false] + expected: FAIL + + [:a_use="increment";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="increment";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="return";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="return";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="return";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="return";aliased=false] + expected: FAIL + + [:a_use="binary_rhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="binary_rhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="return";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="return";aliased=false] + expected: FAIL + + [:a_use="unary_minus";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="unary_minus";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="return";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="return";aliased=false] + expected: FAIL + + [:a_use="bitcast";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="bitcast";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="return";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="return";aliased=false] + expected: FAIL + + [:a_use="convert";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="convert";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="return";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="return";aliased=false] + expected: FAIL + + [:a_use="builtin_arg";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="builtin_arg";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="return";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="return";aliased=false] + expected: FAIL + + [:a_use="index_access";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="index_access";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="return";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="return";aliased=false] + expected: FAIL + + [:a_use="let_init";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="let_init";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="return";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="return";aliased=false] + expected: FAIL + + [:a_use="var_init";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="var_init";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="return";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="return";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="return";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="return";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="return";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="return";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="return";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="return";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="return";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="return";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="return";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="return";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="return";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="return";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="return";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="return";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="return";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="return";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="return";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="return";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="return";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="return";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="return";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="return";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="return";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="return";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="return";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="return";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="return";b_use="return";aliased=true] + expected: FAIL + + [:a_use="return";b_use="return";aliased=false] + expected: FAIL + + [:a_use="return";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="return";b_use="switch_cond";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="increment";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="increment";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="unary_minus";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="unary_minus";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="bitcast";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="bitcast";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="convert";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="convert";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="index_access";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="index_access";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="let_init";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="let_init";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="var_init";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="var_init";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="return";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="return";aliased=false] + expected: FAIL + + [:a_use="switch_cond";b_use="switch_cond";aliased=true] + expected: FAIL + + [:a_use="switch_cond";b_use="switch_cond";aliased=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:invalid_severity:*] + [:severity="none";type="attribute"] + expected: FAIL + + [:severity="none";type="directive"] + expected: FAIL + + [:severity="warn";type="attribute"] + expected: FAIL + + [:severity="warn";type="directive"] + expected: FAIL + + [:severity="goose";type="attribute"] + expected: FAIL + + [:severity="goose";type="directive"] + expected: FAIL + + [:severity="fatal";type="attribute"] + expected: FAIL + + [:severity="fatal";type="directive"] + expected: FAIL + + [:severity="severe";type="attribute"] + expected: FAIL + + [:severity="severe";type="directive"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log2:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:no_direct_recursion:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:no_indirect_recursion:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_ptr_store_type:*] + [:target="i32"] + expected: FAIL + + [:target="P"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,inverseSqrt:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size:*] + [:attr="x_only_float"] + expected: FAIL + + [:attr="xy_only_float"] + expected: FAIL + + [:attr="xyz_float"] + expected: FAIL + + [:attr="x_only_float_literal"] + expected: FAIL + + [:attr="xy_only_float_literal"] + expected: FAIL + + [:attr="xyz_float_literal"] + expected: FAIL + + [:attr="empty"] + expected: FAIL + + [:attr="empty_x"] + expected: FAIL + + [:attr="empty_y"] + expected: FAIL + + [:attr="invalid_entry"] + expected: FAIL + + [:attr="x_only_abstract"] + expected: FAIL + + [:attr="xy_only_abstract"] + expected: FAIL + + [:attr="xyz_abstract"] + expected: FAIL + + [:attr="x_only_unsigned"] + expected: FAIL + + [:attr="xy_only_unsigned"] + expected: FAIL + + [:attr="xyz_unsigned"] + expected: FAIL + + [:attr="x_only_signed"] + expected: FAIL + + [:attr="xy_only_signed"] + expected: FAIL + + [:attr="xyz_signed"] + expected: FAIL + + [:attr="x_only_hex"] + expected: FAIL + + [:attr="xy_only_hex"] + expected: FAIL + + [:attr="xyz_hex"] + expected: FAIL + + [:attr="const_expr"] + expected: FAIL + + [:attr="override"] + expected: FAIL + + [:attr="override_no_default"] + expected: FAIL + + [:attr="trailing_comma_x"] + expected: FAIL + + [:attr="trailing_comma_y"] + expected: FAIL + + [:attr="trailing_comma_z"] + expected: FAIL + + [:attr="override_expr"] + expected: FAIL + + [:attr="mixed_abstract_signed"] + expected: FAIL + + [:attr="mixed_abstract_unsigned"] + expected: FAIL + + [:attr="mixed_signed_unsigned"] + expected: FAIL + + [:attr="zero_x"] + expected: FAIL + + [:attr="zero_y"] + expected: FAIL + + [:attr="zero_z"] + expected: FAIL + + [:attr="negative_x"] + expected: FAIL + + [:attr="negative_y"] + expected: FAIL + + [:attr="negative_z"] + expected: FAIL + + [:attr="max_values"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="misspelling"] + expected: FAIL + + [:attr="no_params"] + expected: FAIL + + [:attr="multi_line"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="mix_ux"] + expected: FAIL + + [:attr="mix_uy"] + expected: FAIL + + [:attr="mix_uz"] + expected: FAIL + + [:attr="duplicate"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:two_pointers:*] + [:address_space="private";a_use="no_access";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="no_access";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="assign";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_lhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="compound_assign_rhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="increment";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_lhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="binary_rhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="unary_minus";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="bitcast";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="convert";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="builtin_arg";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="index_access";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="let_init";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="var_init";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="return";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="return";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="return";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="return";aliased=false] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="private";a_use="switch_cond";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="no_access";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="assign";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_lhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="compound_assign_rhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="increment";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_lhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="binary_rhs";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="unary_minus";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="bitcast";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="convert";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="builtin_arg";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="index_access";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="let_init";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="var_init";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="return";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="return";b_use="switch_cond";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="no_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="no_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="assign";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="assign";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="compound_assign_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="compound_assign_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="compound_assign_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="compound_assign_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="increment";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="increment";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="binary_rhs";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="binary_rhs";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="unary_minus";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="unary_minus";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="bitcast";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="bitcast";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="convert";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="convert";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="builtin_arg";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="builtin_arg";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="index_access";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="index_access";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="let_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="let_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="var_init";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="var_init";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="return";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="return";aliased=false] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="switch_cond";aliased=true] + expected: FAIL + + [:address_space="function";a_use="switch_cond";b_use="switch_cond";aliased=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,abs:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="i32"] + expected: FAIL + + [:stage="constant";type="vec2%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="u32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cu32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cu32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cu32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="i32"] + expected: FAIL + + [:stage="override";type="vec2%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="u32"] + expected: FAIL + + [:stage="override";type="vec2%3Cu32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cu32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_storage_basic:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec3_fract:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:functions:*] + [:case="uniform_result"] + expected: FAIL + + [:case="nonuniform_result"] + expected: FAIL + + [:case="nonuniform_return_is_uniform_after_call"] + expected: FAIL + + [:case="uniform_passthrough_parameter"] + expected: FAIL + + [:case="nonuniform_passthrough_parameter"] + expected: FAIL + + [:case="combined_parameters1"] + expected: FAIL + + [:case="combined_parameters2"] + expected: FAIL + + [:case="combined_parameters3"] + expected: FAIL + + [:case="combined_parameters4"] + expected: FAIL + + [:case="uniform_parameter_cf_after_nonuniform_expr"] + expected: FAIL + + [:case="required_uniform_function_call_in_uniform_cf"] + expected: FAIL + + [:case="required_uniform_function_call_in_nonuniform_cf"] + expected: FAIL + + [:case="required_uniform_function_call_in_nonuniform_cf2"] + expected: FAIL + + [:case="required_uniform_function_call_depends_on_uniform_param"] + expected: FAIL + + [:case="required_uniform_function_call_depends_on_nonuniform_param"] + expected: FAIL + + [:case="dpdx_nonuniform_result"] + expected: FAIL + + [:case="dpdy_nonuniform_result"] + expected: FAIL + + [:case="dpdxCoarse_nonuniform_result"] + expected: FAIL + + [:case="dpdyCoarse_nonuniform_result"] + expected: FAIL + + [:case="dpdxFine_nonuniform_result"] + expected: FAIL + + [:case="dpdyFine_nonuniform_result"] + expected: FAIL + + [:case="fwidth_nonuniform_result"] + expected: FAIL + + [:case="fwidthCoarse_nonuniform_result"] + expected: FAIL + + [:case="fwidthFine_nonuniform_result"] + expected: FAIL + + [:case="textureSample_nonuniform_result"] + expected: FAIL + + [:case="textureSampleBias_nonuniform_result"] + expected: FAIL + + [:case="textureSampleCompare_nonuniform_result"] + expected: FAIL + + [:case="textureDimensions_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureGather_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureGatherCompare_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureLoad_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureNumLayers_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureNumLevels_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureNumSamples_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureSampleLevel_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureSampleGrad_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureSampleCompareLevel_uniform_input_uniform_result"] + expected: FAIL + + [:case="textureSampleBaseClampToEdge_uniform_input_uniform_result"] + expected: FAIL + + [:case="min_uniform_input_uniform_result"] + expected: FAIL + + [:case="value_constructor_uniform_input_uniform_result"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,must_use:call:*] + [:use="%40must_use";call="phony"] + expected: FAIL + + [:use="%40must_use";call="let"] + expected: FAIL + + [:use="%40must_use";call="var"] + expected: FAIL + + [:use="%40must_use";call="condition"] + expected: FAIL + + [:use="%40must_use";call="param"] + expected: FAIL + + [:use="%40must_use";call="statement"] + expected: FAIL + + [:use="";call="phony"] + expected: FAIL + + [:use="";call="let"] + expected: FAIL + + [:use="";call="var"] + expected: FAIL + + [:use="";call="condition"] + expected: FAIL + + [:use="";call="param"] + expected: FAIL + + [:use="";call="statement"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicLoad:load_workgroup:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sin:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,size:size_non_struct:*] + [:attr="control"] + expected: FAIL + + [:attr="struct"] + expected: FAIL + + [:attr="constant"] + expected: FAIL + + [:attr="vec"] + expected: FAIL + + [:attr="mat"] + expected: FAIL + + [:attr="array"] + expected: FAIL + + [:attr="scalar"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,id:id_struct_member:*] + [:id="%40id(1)%20override"] + expected: FAIL + + [:id="%40id(1)"] + expected: FAIL + + [:id=""] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec2:*] + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:greater_than:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:web_platform,copyToTexture,ImageData:copy_subrect_from_ImageData:*] + [:srcDoFlipYDuringCopy=true;dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstPremultiplied=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,degrees:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec3_whole:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:api,operation,sampling,filter_mode:magFilter,linear:*] + [:format="r8unorm"] + expected: FAIL + + [:format="rg8unorm"] + expected: FAIL + + [:format="rgba8unorm"] + expected: FAIL + + [:format="rgba8unorm-srgb"] + expected: FAIL + + [:format="bgra8unorm"] + expected: FAIL + + [:format="bgra8unorm-srgb"] + expected: FAIL + + [:format="r16float"] + expected: FAIL + + [:format="rg16float"] + expected: FAIL + + [:format="rgba16float"] + expected: FAIL + + [:format="rgb10a2unorm"] + expected: FAIL + + +[cts.https.html?q=webgpu:api,operation,sampling,filter_mode:minFilter,linear:*] + [:format="r8unorm"] + expected: FAIL + + [:format="rg8unorm"] + expected: FAIL + + [:format="rgba8unorm"] + expected: FAIL + + [:format="rgba8unorm-srgb"] + expected: FAIL + + [:format="bgra8unorm"] + expected: FAIL + + [:format="bgra8unorm-srgb"] + expected: FAIL + + [:format="r16float"] + expected: FAIL + + [:format="rg16float"] + expected: FAIL + + [:format="rgba16float"] + expected: FAIL + + [:format="rgb10a2unorm"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:scalar:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atanh:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:module_var_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,const:no_indirect_recursion_via_array_size:*] + [:target="a"] + expected: FAIL + + [:target="b"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asin:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sign:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="i32"] + expected: FAIL + + [:stage="constant";type="vec2%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="i32"] + expected: FAIL + + [:stage="override";type="vec2%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Ci32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_nonmatching_vec3:*] + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_vertex_shader:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_bad_store_type:*] + [:storeType="undeclared"] + expected: FAIL + + [:storeType="clamp"] + expected: FAIL + + [:storeType="1"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:function_parameter_types:*] + [:case="u32"] + expected: FAIL + + [:case="i32"] + expected: FAIL + + [:case="f32"] + expected: FAIL + + [:case="bool"] + expected: FAIL + + [:case="vec2"] + expected: FAIL + + [:case="vec3"] + expected: FAIL + + [:case="vec4"] + expected: FAIL + + [:case="mat2x2"] + expected: FAIL + + [:case="mat2x3"] + expected: FAIL + + [:case="mat2x4"] + expected: FAIL + + [:case="mat3x2"] + expected: FAIL + + [:case="mat3x3"] + expected: FAIL + + [:case="mat3x4"] + expected: FAIL + + [:case="mat4x2"] + expected: FAIL + + [:case="mat4x3"] + expected: FAIL + + [:case="mat4x4"] + expected: FAIL + + [:case="array1"] + expected: FAIL + + [:case="array2"] + expected: FAIL + + [:case="array3"] + expected: FAIL + + [:case="array4"] + expected: FAIL + + [:case="array5"] + expected: FAIL + + [:case="struct1"] + expected: FAIL + + [:case="struct2"] + expected: FAIL + + [:case="runtime_array"] + expected: FAIL + + [:case="runtime_struct"] + expected: FAIL + + [:case="override_array"] + expected: FAIL + + [:case="atomic_u32"] + expected: FAIL + + [:case="atomic_struct"] + expected: FAIL + + [:case="texture_sample"] + expected: FAIL + + [:case="texture_depth"] + expected: FAIL + + [:case="texture_multisampled"] + expected: FAIL + + [:case="texture_storage"] + expected: FAIL + + [:case="sampler"] + expected: FAIL + + [:case="sampler_comparison"] + expected: FAIL + + [:case="ptr1"] + expected: FAIL + + [:case="ptr2"] + expected: FAIL + + [:case="ptr3"] + expected: FAIL + + [:case="ptr4"] + expected: FAIL + + [:case="ptr5"] + expected: FAIL + + [:case="ptr6"] + expected: FAIL + + [:case="ptr7"] + expected: FAIL + + [:case="ptr8"] + expected: FAIL + + [:case="ptr9"] + expected: FAIL + + [:case="ptr10"] + expected: FAIL + + [:case="ptr12"] + expected: FAIL + + [:case="ptr13"] + expected: FAIL + + [:case="ptr14"] + expected: FAIL + + [:case="ptr15"] + expected: FAIL + + [:case="ptr16"] + expected: FAIL + + [:case="ptr17"] + expected: FAIL + + [:case="ptrWorkgroupAtomic"] + expected: FAIL + + [:case="ptrWorkgroupNestedAtomic"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,must_use:builtin_no_must_use:*] + [:call="atomicLoad";use=true] + expected: FAIL + + [:call="atomicLoad";use=false] + expected: FAIL + + [:call="atomicAdd";use=true] + expected: FAIL + + [:call="atomicAdd";use=false] + expected: FAIL + + [:call="atomicSub";use=true] + expected: FAIL + + [:call="atomicSub";use=false] + expected: FAIL + + [:call="atomicMax";use=true] + expected: FAIL + + [:call="atomicMax";use=false] + expected: FAIL + + [:call="atomicMin";use=true] + expected: FAIL + + [:call="atomicMin";use=false] + expected: FAIL + + [:call="atomicAnd";use=true] + expected: FAIL + + [:call="atomicAnd";use=false] + expected: FAIL + + [:call="atomicOr";use=true] + expected: FAIL + + [:call="atomicOr";use=false] + expected: FAIL + + [:call="atomicXor";use=true] + expected: FAIL + + [:call="atomicXor";use=false] + expected: FAIL + + [:call="atomicExchange";use=true] + expected: FAIL + + [:call="atomicExchange";use=false] + expected: FAIL + + [:call="atomicCompareExchangeWeak";use=true] + expected: FAIL + + [:call="atomicCompareExchangeWeak";use=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:let_ptr_reads:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp2:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,interpolate:interpolation_validation:*] + [:attr="valid"] + expected: FAIL + + [:attr="no_space"] + expected: FAIL + + [:attr="trailing_comma_one_arg"] + expected: FAIL + + [:attr="trailing_comma_two_arg"] + expected: FAIL + + [:attr="newline"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="no_params"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_value_and_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="missing_parens"] + expected: FAIL + + [:attr="missing_comma"] + expected: FAIL + + [:attr="numeric"] + expected: FAIL + + [:attr="numeric_second_param"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_matching:*] [:inputSource="const";vectorize="_undef_"] expected: FAIL @@ -141538,3 +165270,92345 @@ [:inputSource="storage_rw";vectorize=4] expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:same_pointer_read_and_write:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_function:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:explicit_access_mode:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="write";stage="compute"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="write";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="write";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="write";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="write";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="write";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_matching:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + [:inputSource="uniform";vectorize="_undef_"] + expected: FAIL + + [:inputSource="uniform";vectorize=2] + expected: FAIL + + [:inputSource="uniform";vectorize=3] + expected: FAIL + + [:inputSource="uniform";vectorize=4] + expected: FAIL + + [:inputSource="storage_r";vectorize="_undef_"] + expected: FAIL + + [:inputSource="storage_r";vectorize=2] + expected: FAIL + + [:inputSource="storage_r";vectorize=3] + expected: FAIL + + [:inputSource="storage_r";vectorize=4] + expected: FAIL + + [:inputSource="storage_rw";vectorize="_undef_"] + expected: FAIL + + [:inputSource="storage_rw";vectorize=2] + expected: FAIL + + [:inputSource="storage_rw";vectorize=3] + expected: FAIL + + [:inputSource="storage_rw";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec2_fract:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,texture,cubeArray:cube_array:*] + [:dimension="cube"] + expected: FAIL + + [:dimension="cube-array"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,id:id_non_override:*] + [:type="var"] + expected: FAIL + + [:type="const"] + expected: FAIL + + [:type="override"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:binding_attributes:*] + [:stage="vertex";has_group=true;has_binding=true;resource="texture_1d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_3d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_cube"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_external"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_storage_1d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_storage_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_storage_3d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_depth_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_depth_cube"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="sampler"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="sampler_comparison"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="uniform"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=true;resource="storage"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_1d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_3d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_cube"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_external"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_storage_1d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_storage_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_storage_3d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_depth_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_depth_cube"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="sampler"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="sampler_comparison"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="uniform"] + expected: FAIL + + [:stage="vertex";has_group=true;has_binding=false;resource="storage"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_1d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_3d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_cube"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_external"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_storage_1d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_storage_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_storage_3d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_depth_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_depth_cube"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="sampler"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="sampler_comparison"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="uniform"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=true;resource="storage"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_1d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_3d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_cube"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_external"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_storage_1d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_storage_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_storage_3d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_depth_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_depth_cube"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="sampler"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="sampler_comparison"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="uniform"] + expected: FAIL + + [:stage="vertex";has_group=false;has_binding=false;resource="storage"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_1d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_3d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_cube"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_external"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_storage_1d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_storage_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_storage_3d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_depth_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_depth_cube"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="sampler"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="sampler_comparison"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="uniform"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=true;resource="storage"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_1d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_3d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_cube"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_external"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_storage_1d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_storage_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_storage_3d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_depth_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_depth_cube"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="sampler"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="sampler_comparison"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="uniform"] + expected: FAIL + + [:stage="fragment";has_group=true;has_binding=false;resource="storage"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_1d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_3d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_cube"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_external"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_storage_1d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_storage_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_storage_3d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_depth_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_depth_cube"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="sampler"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="sampler_comparison"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="uniform"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=true;resource="storage"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_1d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_3d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_cube"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_external"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_storage_1d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_storage_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_storage_3d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_depth_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_depth_cube"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="sampler"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="sampler_comparison"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="uniform"] + expected: FAIL + + [:stage="fragment";has_group=false;has_binding=false;resource="storage"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_1d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_2d_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_3d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_cube"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_cube_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_external"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_storage_1d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_storage_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_storage_3d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_depth_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_depth_cube"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="sampler"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="sampler_comparison"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="uniform"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=true;resource="storage"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_1d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_2d_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_3d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_cube"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_cube_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_external"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_storage_1d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_storage_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_storage_3d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_depth_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_depth_cube"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="sampler"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="sampler_comparison"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="uniform"] + expected: FAIL + + [:stage="compute";has_group=true;has_binding=false;resource="storage"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_1d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_2d_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_3d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_cube"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_cube_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_external"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_storage_1d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_storage_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_storage_3d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_depth_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_depth_cube"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="sampler"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="sampler_comparison"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="uniform"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=true;resource="storage"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_1d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_2d_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_3d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_cube"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_cube_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_external"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_storage_1d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_storage_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_storage_2d_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_storage_3d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_depth_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_depth_2d_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_depth_cube"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_depth_cube_array"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="texture_depth_multisampled_2d"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="sampler"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="sampler_comparison"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="uniform"] + expected: FAIL + + [:stage="compute";has_group=false;has_binding=false;resource="storage"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asinh:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,id:id_in_function:*] + [:id="%40id(1)"] + expected: FAIL + + [:id=""] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_const_to_f32:*] + [:fromScalarType="i32";vectorize="v1_b0"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v2_b0"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v2_b1"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v3_b0"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v3_b1"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v3_b2"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v4_b0"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v4_b1"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v4_b2"] + expected: FAIL + + [:fromScalarType="i32";vectorize="v4_b3"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v1_b0"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v2_b0"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v2_b1"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v3_b0"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v3_b1"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v3_b2"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v4_b0"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v4_b1"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v4_b2"] + expected: FAIL + + [:fromScalarType="u32";vectorize="v4_b3"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:call_arg_types_match_params:*] + expected: [OK, TIMEOUT] + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=1;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=2;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="u32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="i32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="u32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="i32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="u32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="i32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="abstract_float";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="unsigned_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="signed_int";arg2_value="float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="abstract_float";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="unsigned_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="signed_int";arg3_value="float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="abstract_float"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="unsigned_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="signed_int"] + expected: FAIL + + [:num_args=3;p1_type="f32";p2_type="f32";p3_type="f32";arg1_value="float";arg2_value="float";arg3_value="float"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,saturate:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_atomic:*] + [:target="i32"] + expected: FAIL + + [:target="A"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,round:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,degrees:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sinh:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_nonmatching_vec3:*] + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,override:no_indirect_recursion:*] + [:target="a"] + expected: FAIL + + [:target="b"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_storage_basic:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,size:size:*] + [:attr="valid"] + expected: FAIL + + [:attr="non_align_size"] + expected: FAIL + + [:attr="i32"] + expected: FAIL + + [:attr="u32"] + expected: FAIL + + [:attr="constant"] + expected: FAIL + + [:attr="trailing_comma"] + expected: FAIL + + [:attr="hex"] + expected: FAIL + + [:attr="whitespace"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="large"] + expected: FAIL + + [:attr="misspelling"] + expected: FAIL + + [:attr="no_value"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="missing_parens"] + expected: FAIL + + [:attr="multiple_values"] + expected: FAIL + + [:attr="override"] + expected: FAIL + + [:attr="zero"] + expected: FAIL + + [:attr="negative"] + expected: FAIL + + [:attr="f32_literal"] + expected: FAIL + + [:attr="f32"] + expected: FAIL + + [:attr="duplicate"] + expected: FAIL + + [:attr="too_small"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,compute_pass,unused:*] + [:textureType="regular"] + expected: FAIL + + [:textureType="storage"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,compute_pass,used:*] + [:bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="dispatchWorkgroups";textureType="regular"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="dispatchWorkgroups";textureType="storage"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="dispatchWorkgroupsIndirect";textureType="regular"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="dispatchWorkgroupsIndirect";textureType="storage"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="dispatchWorkgroups";textureType="regular"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="dispatchWorkgroups";textureType="storage"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="dispatchWorkgroupsIndirect";textureType="regular"] + expected: FAIL + + [:bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="dispatchWorkgroupsIndirect";textureType="storage"] + expected: FAIL + + [:bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="dispatchWorkgroups";textureType="regular"] + expected: FAIL + + [:bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="dispatchWorkgroupsIndirect";textureType="regular"] + expected: FAIL + + [:bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="dispatchWorkgroups";textureType="regular"] + expected: FAIL + + [:bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="dispatchWorkgroupsIndirect";textureType="regular"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:scalar:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:scalar_vector:*] + [:inputSource="const";dim=2] + expected: FAIL + + [:inputSource="const";dim=3] + expected: FAIL + + [:inputSource="const";dim=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,saturate:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sinh:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_not_instantiable:*] + [:case="ptr"] + expected: FAIL + + [:case="privateAtomic"] + expected: FAIL + + [:case="functionAtomic"] + expected: FAIL + + [:case="uniformAtomic"] + expected: FAIL + + [:case="workgroupRTArray"] + expected: FAIL + + [:case="uniformRTArray"] + expected: FAIL + + [:case="privateRTArray"] + expected: FAIL + + [:case="functionRTArray"] + expected: FAIL + + [:case="RTArrayNotLast"] + expected: FAIL + + [:case="nestedRTArray"] + expected: FAIL + + +[cts.https.html?q=webgpu:web_platform,copyToTexture,image:copy_subrect_from_2D_Canvas:*] + [:srcDoFlipYDuringCopy=true;dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstPremultiplied=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,binding:binding_without_group:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sign:unsigned_integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,render_pass,used:*] + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="draw";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexed";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexedIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="draw";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexed";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexedIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="draw";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexed";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20the%20same%20bindGroup";useCase="drawIndexedIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="draw";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexed";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="incompatible%20views%20in%20different%20bindGroups";useCase="drawIndexedIndirect";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="can%20bind%20same%20view%20in%20different%20bindGroups";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="draw";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="drawIndexed";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="drawIndirect";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";bindCase="binding%20incompatible%20bindGroups%20then%20fix";useCase="drawIndexedIndirect";textureType="regular"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:not_equals:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:less_equals:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:vector_scalar:*] + [:inputSource="const";dim=2] + expected: FAIL + + [:inputSource="const";dim=3] + expected: FAIL + + [:inputSource="const";dim=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_nonmatching_vec2:*] + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_workgroup_basic:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_array_size:*] + [:target="i32"] + expected: FAIL + + [:target="A"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,texture,createTexture:unsupportedTextureFormats:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,radians:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:short_circuit_expressions:*] + [:case="or_uniform_uniform"] + expected: FAIL + + [:case="or_uniform_nonuniform"] + expected: FAIL + + [:case="or_nonuniform_uniform"] + expected: FAIL + + [:case="or_nonuniform_nonuniform"] + expected: FAIL + + [:case="or_uniform_first_nonuniform"] + expected: FAIL + + [:case="or_uniform_second_nonuniform"] + expected: FAIL + + [:case="and_uniform_uniform"] + expected: FAIL + + [:case="and_uniform_nonuniform"] + expected: FAIL + + [:case="and_nonuniform_uniform"] + expected: FAIL + + [:case="and_nonuniform_nonuniform"] + expected: FAIL + + [:case="and_uniform_first_nonuniform"] + expected: FAIL + + [:case="and_uniform_second_nonuniform"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_matrix_subtraction:matrix:*] + [:inputSource="const";cols=2;rows=2] + expected: FAIL + + [:inputSource="const";cols=2;rows=3] + expected: FAIL + + [:inputSource="const";cols=2;rows=4] + expected: FAIL + + [:inputSource="const";cols=3;rows=2] + expected: FAIL + + [:inputSource="const";cols=3;rows=3] + expected: FAIL + + [:inputSource="const";cols=3;rows=4] + expected: FAIL + + [:inputSource="const";cols=4;rows=2] + expected: FAIL + + [:inputSource="const";cols=4;rows=3] + expected: FAIL + + [:inputSource="const";cols=4;rows=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec4:*] + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:integer_argument_y:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_vector_element:*] + [:target="i32"] + expected: FAIL + + [:target="V"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:vector_scalar:*] + [:inputSource="const";dim=2] + expected: FAIL + + [:inputSource="const";dim=3] + expected: FAIL + + [:inputSource="const";dim=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,f32_remainder:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + [:inputSource="uniform";vectorize=2] + expected: FAIL + + [:inputSource="uniform";vectorize=3] + expected: FAIL + + [:inputSource="uniform";vectorize=4] + expected: FAIL + + [:inputSource="storage_r";vectorize=2] + expected: FAIL + + [:inputSource="storage_r";vectorize=3] + expected: FAIL + + [:inputSource="storage_r";vectorize=4] + expected: FAIL + + [:inputSource="storage_rw";vectorize=2] + expected: FAIL + + [:inputSource="storage_rw";vectorize=3] + expected: FAIL + + [:inputSource="storage_rw";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp2:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,f32_addition:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + [:inputSource="uniform";vectorize=2] + expected: FAIL + + [:inputSource="uniform";vectorize=3] + expected: FAIL + + [:inputSource="uniform";vectorize=4] + expected: FAIL + + [:inputSource="storage_r";vectorize=2] + expected: FAIL + + [:inputSource="storage_r";vectorize=3] + expected: FAIL + + [:inputSource="storage_r";vectorize=4] + expected: FAIL + + [:inputSource="storage_rw";vectorize=2] + expected: FAIL + + [:inputSource="storage_rw";vectorize=3] + expected: FAIL + + [:inputSource="storage_rw";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_var:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cos:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,const:no_indirect_recursion:*] + [:target="a"] + expected: FAIL + + [:target="b"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_workgroup_basic:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_let_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:scalar:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_addition:scalar_vector:*] + [:inputSource="const";dim=2] + expected: FAIL + + [:inputSource="const";dim=3] + expected: FAIL + + [:inputSource="const";dim=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_matrix_addition:matrix:*] + [:inputSource="const";cols=2;rows=2] + expected: FAIL + + [:inputSource="const";cols=2;rows=3] + expected: FAIL + + [:inputSource="const";cols=2;rows=4] + expected: FAIL + + [:inputSource="const";cols=3;rows=2] + expected: FAIL + + [:inputSource="const";cols=3;rows=3] + expected: FAIL + + [:inputSource="const";cols=3;rows=4] + expected: FAIL + + [:inputSource="const";cols=4;rows=2] + expected: FAIL + + [:inputSource="const";cols=4;rows=3] + expected: FAIL + + [:inputSource="const";cols=4;rows=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:module_const_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:function_parameter_matching:*] + expected: [OK, TIMEOUT] + [:decl="u32";arg="u32_literal"] + expected: FAIL + + [:decl="u32";arg="i32_literal"] + expected: FAIL + + [:decl="u32";arg="f32_literal"] + expected: FAIL + + [:decl="u32";arg="bool_literal"] + expected: FAIL + + [:decl="u32";arg="abstract_int_literal"] + expected: FAIL + + [:decl="u32";arg="abstract_float_literal"] + expected: FAIL + + [:decl="u32";arg="vec2u_constructor"] + expected: FAIL + + [:decl="u32";arg="vec2i_constructor"] + expected: FAIL + + [:decl="u32";arg="vec2f_constructor"] + expected: FAIL + + [:decl="u32";arg="vec2b_constructor"] + expected: FAIL + + [:decl="u32";arg="vec3u_constructor"] + expected: FAIL + + [:decl="u32";arg="vec3i_constructor"] + expected: FAIL + + [:decl="u32";arg="vec3f_constructor"] + expected: FAIL + + [:decl="u32";arg="vec3b_constructor"] + expected: FAIL + + [:decl="u32";arg="vec4u_constructor"] + expected: FAIL + + [:decl="u32";arg="vec4i_constructor"] + expected: FAIL + + [:decl="u32";arg="vec4f_constructor"] + expected: FAIL + + [:decl="u32";arg="vec4b_constructor"] + expected: FAIL + + [:decl="u32";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="u32";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="u32";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="u32";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="u32";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="u32";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="u32";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="u32";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="u32";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="u32";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="u32";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="u32";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="u32";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="u32";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="u32";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="u32";arg="array1_constructor"] + expected: FAIL + + [:decl="u32";arg="array2_constructor"] + expected: FAIL + + [:decl="u32";arg="array3_constructor"] + expected: FAIL + + [:decl="u32";arg="array4_constructor"] + expected: FAIL + + [:decl="u32";arg="array5_constructor"] + expected: FAIL + + [:decl="u32";arg="struct1_constructor"] + expected: FAIL + + [:decl="u32";arg="struct2_constructor"] + expected: FAIL + + [:decl="u32";arg="g_u32"] + expected: FAIL + + [:decl="u32";arg="g_i32"] + expected: FAIL + + [:decl="u32";arg="g_f32"] + expected: FAIL + + [:decl="u32";arg="g_bool"] + expected: FAIL + + [:decl="u32";arg="g_vec2"] + expected: FAIL + + [:decl="u32";arg="g_vec3"] + expected: FAIL + + [:decl="u32";arg="g_vec4"] + expected: FAIL + + [:decl="u32";arg="g_mat2x2"] + expected: FAIL + + [:decl="u32";arg="g_mat2x3"] + expected: FAIL + + [:decl="u32";arg="g_mat2x4"] + expected: FAIL + + [:decl="u32";arg="g_mat3x2"] + expected: FAIL + + [:decl="u32";arg="g_mat3x3"] + expected: FAIL + + [:decl="u32";arg="g_mat3x4"] + expected: FAIL + + [:decl="u32";arg="g_mat4x2"] + expected: FAIL + + [:decl="u32";arg="g_mat4x3"] + expected: FAIL + + [:decl="u32";arg="g_mat4x4"] + expected: FAIL + + [:decl="u32";arg="g_array1"] + expected: FAIL + + [:decl="u32";arg="g_array2"] + expected: FAIL + + [:decl="u32";arg="g_array3"] + expected: FAIL + + [:decl="u32";arg="g_array4"] + expected: FAIL + + [:decl="u32";arg="g_array5"] + expected: FAIL + + [:decl="u32";arg="g_constructible"] + expected: FAIL + + [:decl="u32";arg="g_struct_with_array"] + expected: FAIL + + [:decl="u32";arg="f_u32"] + expected: FAIL + + [:decl="u32";arg="f_i32"] + expected: FAIL + + [:decl="u32";arg="f_f32"] + expected: FAIL + + [:decl="u32";arg="f_bool"] + expected: FAIL + + [:decl="u32";arg="f_vec2"] + expected: FAIL + + [:decl="u32";arg="f_vec3"] + expected: FAIL + + [:decl="u32";arg="f_vec4"] + expected: FAIL + + [:decl="u32";arg="f_mat2x2"] + expected: FAIL + + [:decl="u32";arg="f_mat2x3"] + expected: FAIL + + [:decl="u32";arg="f_mat2x4"] + expected: FAIL + + [:decl="u32";arg="f_mat3x2"] + expected: FAIL + + [:decl="u32";arg="f_mat3x3"] + expected: FAIL + + [:decl="u32";arg="f_mat3x4"] + expected: FAIL + + [:decl="u32";arg="f_mat4x2"] + expected: FAIL + + [:decl="u32";arg="f_mat4x3"] + expected: FAIL + + [:decl="u32";arg="f_mat4x4"] + expected: FAIL + + [:decl="u32";arg="f_array1"] + expected: FAIL + + [:decl="u32";arg="f_array2"] + expected: FAIL + + [:decl="u32";arg="f_array3"] + expected: FAIL + + [:decl="u32";arg="f_array4"] + expected: FAIL + + [:decl="u32";arg="f_array5"] + expected: FAIL + + [:decl="u32";arg="f_constructible"] + expected: FAIL + + [:decl="u32";arg="f_struct_with_array"] + expected: FAIL + + [:decl="u32";arg="g_index_u32"] + expected: FAIL + + [:decl="u32";arg="g_index_i32"] + expected: FAIL + + [:decl="u32";arg="g_index_f32"] + expected: FAIL + + [:decl="u32";arg="g_index_bool"] + expected: FAIL + + [:decl="u32";arg="f_index_u32"] + expected: FAIL + + [:decl="u32";arg="f_index_i32"] + expected: FAIL + + [:decl="u32";arg="f_index_f32"] + expected: FAIL + + [:decl="u32";arg="f_index_bool"] + expected: FAIL + + [:decl="u32";arg="g_array_index_u32"] + expected: FAIL + + [:decl="u32";arg="g_array_index_i32"] + expected: FAIL + + [:decl="u32";arg="g_array_index_f32"] + expected: FAIL + + [:decl="u32";arg="g_array_index_bool"] + expected: FAIL + + [:decl="u32";arg="f_array_index_u32"] + expected: FAIL + + [:decl="u32";arg="f_array_index_i32"] + expected: FAIL + + [:decl="u32";arg="f_array_index_f32"] + expected: FAIL + + [:decl="u32";arg="f_array_index_bool"] + expected: FAIL + + [:decl="u32";arg="texture_sample"] + expected: FAIL + + [:decl="u32";arg="texture_depth"] + expected: FAIL + + [:decl="u32";arg="texture_multisampled"] + expected: FAIL + + [:decl="u32";arg="texture_storage"] + expected: FAIL + + [:decl="u32";arg="texture_external"] + expected: FAIL + + [:decl="u32";arg="sampler"] + expected: FAIL + + [:decl="u32";arg="sampler_comparison"] + expected: FAIL + + [:decl="u32";arg="ptr1"] + expected: FAIL + + [:decl="u32";arg="ptr2"] + expected: FAIL + + [:decl="u32";arg="ptr3"] + expected: FAIL + + [:decl="u32";arg="ptr4"] + expected: FAIL + + [:decl="u32";arg="ptr5"] + expected: FAIL + + [:decl="u32";arg="ptr6"] + expected: FAIL + + [:decl="u32";arg="ptr7"] + expected: FAIL + + [:decl="u32";arg="ptr8"] + expected: FAIL + + [:decl="u32";arg="ptr9"] + expected: FAIL + + [:decl="u32";arg="ptr10"] + expected: FAIL + + [:decl="u32";arg="ptr11"] + expected: FAIL + + [:decl="u32";arg="ptr12"] + expected: FAIL + + [:decl="i32";arg="u32_literal"] + expected: FAIL + + [:decl="i32";arg="i32_literal"] + expected: FAIL + + [:decl="i32";arg="f32_literal"] + expected: FAIL + + [:decl="i32";arg="bool_literal"] + expected: FAIL + + [:decl="i32";arg="abstract_int_literal"] + expected: FAIL + + [:decl="i32";arg="abstract_float_literal"] + expected: FAIL + + [:decl="i32";arg="vec2u_constructor"] + expected: FAIL + + [:decl="i32";arg="vec2i_constructor"] + expected: FAIL + + [:decl="i32";arg="vec2f_constructor"] + expected: FAIL + + [:decl="i32";arg="vec2b_constructor"] + expected: FAIL + + [:decl="i32";arg="vec3u_constructor"] + expected: FAIL + + [:decl="i32";arg="vec3i_constructor"] + expected: FAIL + + [:decl="i32";arg="vec3f_constructor"] + expected: FAIL + + [:decl="i32";arg="vec3b_constructor"] + expected: FAIL + + [:decl="i32";arg="vec4u_constructor"] + expected: FAIL + + [:decl="i32";arg="vec4i_constructor"] + expected: FAIL + + [:decl="i32";arg="vec4f_constructor"] + expected: FAIL + + [:decl="i32";arg="vec4b_constructor"] + expected: FAIL + + [:decl="i32";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="i32";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="i32";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="i32";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="i32";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="i32";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="i32";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="i32";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="i32";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="i32";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="i32";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="i32";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="i32";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="i32";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="i32";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="i32";arg="array1_constructor"] + expected: FAIL + + [:decl="i32";arg="array2_constructor"] + expected: FAIL + + [:decl="i32";arg="array3_constructor"] + expected: FAIL + + [:decl="i32";arg="array4_constructor"] + expected: FAIL + + [:decl="i32";arg="array5_constructor"] + expected: FAIL + + [:decl="i32";arg="struct1_constructor"] + expected: FAIL + + [:decl="i32";arg="struct2_constructor"] + expected: FAIL + + [:decl="i32";arg="g_u32"] + expected: FAIL + + [:decl="i32";arg="g_i32"] + expected: FAIL + + [:decl="i32";arg="g_f32"] + expected: FAIL + + [:decl="i32";arg="g_bool"] + expected: FAIL + + [:decl="i32";arg="g_vec2"] + expected: FAIL + + [:decl="i32";arg="g_vec3"] + expected: FAIL + + [:decl="i32";arg="g_vec4"] + expected: FAIL + + [:decl="i32";arg="g_mat2x2"] + expected: FAIL + + [:decl="i32";arg="g_mat2x3"] + expected: FAIL + + [:decl="i32";arg="g_mat2x4"] + expected: FAIL + + [:decl="i32";arg="g_mat3x2"] + expected: FAIL + + [:decl="i32";arg="g_mat3x3"] + expected: FAIL + + [:decl="i32";arg="g_mat3x4"] + expected: FAIL + + [:decl="i32";arg="g_mat4x2"] + expected: FAIL + + [:decl="i32";arg="g_mat4x3"] + expected: FAIL + + [:decl="i32";arg="g_mat4x4"] + expected: FAIL + + [:decl="i32";arg="g_array1"] + expected: FAIL + + [:decl="i32";arg="g_array2"] + expected: FAIL + + [:decl="i32";arg="g_array3"] + expected: FAIL + + [:decl="i32";arg="g_array4"] + expected: FAIL + + [:decl="i32";arg="g_array5"] + expected: FAIL + + [:decl="i32";arg="g_constructible"] + expected: FAIL + + [:decl="i32";arg="g_struct_with_array"] + expected: FAIL + + [:decl="i32";arg="f_u32"] + expected: FAIL + + [:decl="i32";arg="f_i32"] + expected: FAIL + + [:decl="i32";arg="f_f32"] + expected: FAIL + + [:decl="i32";arg="f_bool"] + expected: FAIL + + [:decl="i32";arg="f_vec2"] + expected: FAIL + + [:decl="i32";arg="f_vec3"] + expected: FAIL + + [:decl="i32";arg="f_vec4"] + expected: FAIL + + [:decl="i32";arg="f_mat2x2"] + expected: FAIL + + [:decl="i32";arg="f_mat2x3"] + expected: FAIL + + [:decl="i32";arg="f_mat2x4"] + expected: FAIL + + [:decl="i32";arg="f_mat3x2"] + expected: FAIL + + [:decl="i32";arg="f_mat3x3"] + expected: FAIL + + [:decl="i32";arg="f_mat3x4"] + expected: FAIL + + [:decl="i32";arg="f_mat4x2"] + expected: FAIL + + [:decl="i32";arg="f_mat4x3"] + expected: FAIL + + [:decl="i32";arg="f_mat4x4"] + expected: FAIL + + [:decl="i32";arg="f_array1"] + expected: FAIL + + [:decl="i32";arg="f_array2"] + expected: FAIL + + [:decl="i32";arg="f_array3"] + expected: FAIL + + [:decl="i32";arg="f_array4"] + expected: FAIL + + [:decl="i32";arg="f_array5"] + expected: FAIL + + [:decl="i32";arg="f_constructible"] + expected: FAIL + + [:decl="i32";arg="f_struct_with_array"] + expected: FAIL + + [:decl="i32";arg="g_index_u32"] + expected: FAIL + + [:decl="i32";arg="g_index_i32"] + expected: FAIL + + [:decl="i32";arg="g_index_f32"] + expected: FAIL + + [:decl="i32";arg="g_index_bool"] + expected: FAIL + + [:decl="i32";arg="f_index_u32"] + expected: FAIL + + [:decl="i32";arg="f_index_i32"] + expected: FAIL + + [:decl="i32";arg="f_index_f32"] + expected: FAIL + + [:decl="i32";arg="f_index_bool"] + expected: FAIL + + [:decl="i32";arg="g_array_index_u32"] + expected: FAIL + + [:decl="i32";arg="g_array_index_i32"] + expected: FAIL + + [:decl="i32";arg="g_array_index_f32"] + expected: FAIL + + [:decl="i32";arg="g_array_index_bool"] + expected: FAIL + + [:decl="i32";arg="f_array_index_u32"] + expected: FAIL + + [:decl="i32";arg="f_array_index_i32"] + expected: FAIL + + [:decl="i32";arg="f_array_index_f32"] + expected: FAIL + + [:decl="i32";arg="f_array_index_bool"] + expected: FAIL + + [:decl="i32";arg="texture_sample"] + expected: FAIL + + [:decl="i32";arg="texture_depth"] + expected: FAIL + + [:decl="i32";arg="texture_multisampled"] + expected: FAIL + + [:decl="i32";arg="texture_storage"] + expected: FAIL + + [:decl="i32";arg="texture_external"] + expected: FAIL + + [:decl="i32";arg="sampler"] + expected: FAIL + + [:decl="i32";arg="sampler_comparison"] + expected: FAIL + + [:decl="i32";arg="ptr1"] + expected: FAIL + + [:decl="i32";arg="ptr2"] + expected: FAIL + + [:decl="i32";arg="ptr3"] + expected: FAIL + + [:decl="i32";arg="ptr4"] + expected: FAIL + + [:decl="i32";arg="ptr5"] + expected: FAIL + + [:decl="i32";arg="ptr6"] + expected: FAIL + + [:decl="i32";arg="ptr7"] + expected: FAIL + + [:decl="i32";arg="ptr8"] + expected: FAIL + + [:decl="i32";arg="ptr9"] + expected: FAIL + + [:decl="i32";arg="ptr10"] + expected: FAIL + + [:decl="i32";arg="ptr11"] + expected: FAIL + + [:decl="i32";arg="ptr12"] + expected: FAIL + + [:decl="f32";arg="u32_literal"] + expected: FAIL + + [:decl="f32";arg="i32_literal"] + expected: FAIL + + [:decl="f32";arg="f32_literal"] + expected: FAIL + + [:decl="f32";arg="bool_literal"] + expected: FAIL + + [:decl="f32";arg="abstract_int_literal"] + expected: FAIL + + [:decl="f32";arg="abstract_float_literal"] + expected: FAIL + + [:decl="f32";arg="vec2u_constructor"] + expected: FAIL + + [:decl="f32";arg="vec2i_constructor"] + expected: FAIL + + [:decl="f32";arg="vec2f_constructor"] + expected: FAIL + + [:decl="f32";arg="vec2b_constructor"] + expected: FAIL + + [:decl="f32";arg="vec3u_constructor"] + expected: FAIL + + [:decl="f32";arg="vec3i_constructor"] + expected: FAIL + + [:decl="f32";arg="vec3f_constructor"] + expected: FAIL + + [:decl="f32";arg="vec3b_constructor"] + expected: FAIL + + [:decl="f32";arg="vec4u_constructor"] + expected: FAIL + + [:decl="f32";arg="vec4i_constructor"] + expected: FAIL + + [:decl="f32";arg="vec4f_constructor"] + expected: FAIL + + [:decl="f32";arg="vec4b_constructor"] + expected: FAIL + + [:decl="f32";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="f32";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="f32";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="f32";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="f32";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="f32";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="f32";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="f32";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="f32";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="f32";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="f32";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="f32";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="f32";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="f32";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="f32";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="f32";arg="array1_constructor"] + expected: FAIL + + [:decl="f32";arg="array2_constructor"] + expected: FAIL + + [:decl="f32";arg="array3_constructor"] + expected: FAIL + + [:decl="f32";arg="array4_constructor"] + expected: FAIL + + [:decl="f32";arg="array5_constructor"] + expected: FAIL + + [:decl="f32";arg="struct1_constructor"] + expected: FAIL + + [:decl="f32";arg="struct2_constructor"] + expected: FAIL + + [:decl="f32";arg="g_u32"] + expected: FAIL + + [:decl="f32";arg="g_i32"] + expected: FAIL + + [:decl="f32";arg="g_f32"] + expected: FAIL + + [:decl="f32";arg="g_bool"] + expected: FAIL + + [:decl="f32";arg="g_vec2"] + expected: FAIL + + [:decl="f32";arg="g_vec3"] + expected: FAIL + + [:decl="f32";arg="g_vec4"] + expected: FAIL + + [:decl="f32";arg="g_mat2x2"] + expected: FAIL + + [:decl="f32";arg="g_mat2x3"] + expected: FAIL + + [:decl="f32";arg="g_mat2x4"] + expected: FAIL + + [:decl="f32";arg="g_mat3x2"] + expected: FAIL + + [:decl="f32";arg="g_mat3x3"] + expected: FAIL + + [:decl="f32";arg="g_mat3x4"] + expected: FAIL + + [:decl="f32";arg="g_mat4x2"] + expected: FAIL + + [:decl="f32";arg="g_mat4x3"] + expected: FAIL + + [:decl="f32";arg="g_mat4x4"] + expected: FAIL + + [:decl="f32";arg="g_array1"] + expected: FAIL + + [:decl="f32";arg="g_array2"] + expected: FAIL + + [:decl="f32";arg="g_array3"] + expected: FAIL + + [:decl="f32";arg="g_array4"] + expected: FAIL + + [:decl="f32";arg="g_array5"] + expected: FAIL + + [:decl="f32";arg="g_constructible"] + expected: FAIL + + [:decl="f32";arg="g_struct_with_array"] + expected: FAIL + + [:decl="f32";arg="f_u32"] + expected: FAIL + + [:decl="f32";arg="f_i32"] + expected: FAIL + + [:decl="f32";arg="f_f32"] + expected: FAIL + + [:decl="f32";arg="f_bool"] + expected: FAIL + + [:decl="f32";arg="f_vec2"] + expected: FAIL + + [:decl="f32";arg="f_vec3"] + expected: FAIL + + [:decl="f32";arg="f_vec4"] + expected: FAIL + + [:decl="f32";arg="f_mat2x2"] + expected: FAIL + + [:decl="f32";arg="f_mat2x3"] + expected: FAIL + + [:decl="f32";arg="f_mat2x4"] + expected: FAIL + + [:decl="f32";arg="f_mat3x2"] + expected: FAIL + + [:decl="f32";arg="f_mat3x3"] + expected: FAIL + + [:decl="f32";arg="f_mat3x4"] + expected: FAIL + + [:decl="f32";arg="f_mat4x2"] + expected: FAIL + + [:decl="f32";arg="f_mat4x3"] + expected: FAIL + + [:decl="f32";arg="f_mat4x4"] + expected: FAIL + + [:decl="f32";arg="f_array1"] + expected: FAIL + + [:decl="f32";arg="f_array2"] + expected: FAIL + + [:decl="f32";arg="f_array3"] + expected: FAIL + + [:decl="f32";arg="f_array4"] + expected: FAIL + + [:decl="f32";arg="f_array5"] + expected: FAIL + + [:decl="f32";arg="f_constructible"] + expected: FAIL + + [:decl="f32";arg="f_struct_with_array"] + expected: FAIL + + [:decl="f32";arg="g_index_u32"] + expected: FAIL + + [:decl="f32";arg="g_index_i32"] + expected: FAIL + + [:decl="f32";arg="g_index_f32"] + expected: FAIL + + [:decl="f32";arg="g_index_bool"] + expected: FAIL + + [:decl="f32";arg="f_index_u32"] + expected: FAIL + + [:decl="f32";arg="f_index_i32"] + expected: FAIL + + [:decl="f32";arg="f_index_f32"] + expected: FAIL + + [:decl="f32";arg="f_index_bool"] + expected: FAIL + + [:decl="f32";arg="g_array_index_u32"] + expected: FAIL + + [:decl="f32";arg="g_array_index_i32"] + expected: FAIL + + [:decl="f32";arg="g_array_index_f32"] + expected: FAIL + + [:decl="f32";arg="g_array_index_bool"] + expected: FAIL + + [:decl="f32";arg="f_array_index_u32"] + expected: FAIL + + [:decl="f32";arg="f_array_index_i32"] + expected: FAIL + + [:decl="f32";arg="f_array_index_f32"] + expected: FAIL + + [:decl="f32";arg="f_array_index_bool"] + expected: FAIL + + [:decl="f32";arg="texture_sample"] + expected: FAIL + + [:decl="f32";arg="texture_depth"] + expected: FAIL + + [:decl="f32";arg="texture_multisampled"] + expected: FAIL + + [:decl="f32";arg="texture_storage"] + expected: FAIL + + [:decl="f32";arg="texture_external"] + expected: FAIL + + [:decl="f32";arg="sampler"] + expected: FAIL + + [:decl="f32";arg="sampler_comparison"] + expected: FAIL + + [:decl="f32";arg="ptr1"] + expected: FAIL + + [:decl="f32";arg="ptr2"] + expected: FAIL + + [:decl="f32";arg="ptr3"] + expected: FAIL + + [:decl="f32";arg="ptr4"] + expected: FAIL + + [:decl="f32";arg="ptr5"] + expected: FAIL + + [:decl="f32";arg="ptr6"] + expected: FAIL + + [:decl="f32";arg="ptr7"] + expected: FAIL + + [:decl="f32";arg="ptr8"] + expected: FAIL + + [:decl="f32";arg="ptr9"] + expected: FAIL + + [:decl="f32";arg="ptr10"] + expected: FAIL + + [:decl="f32";arg="ptr11"] + expected: FAIL + + [:decl="f32";arg="ptr12"] + expected: FAIL + + [:decl="bool";arg="u32_literal"] + expected: FAIL + + [:decl="bool";arg="i32_literal"] + expected: FAIL + + [:decl="bool";arg="f32_literal"] + expected: FAIL + + [:decl="bool";arg="bool_literal"] + expected: FAIL + + [:decl="bool";arg="abstract_int_literal"] + expected: FAIL + + [:decl="bool";arg="abstract_float_literal"] + expected: FAIL + + [:decl="bool";arg="vec2u_constructor"] + expected: FAIL + + [:decl="bool";arg="vec2i_constructor"] + expected: FAIL + + [:decl="bool";arg="vec2f_constructor"] + expected: FAIL + + [:decl="bool";arg="vec2b_constructor"] + expected: FAIL + + [:decl="bool";arg="vec3u_constructor"] + expected: FAIL + + [:decl="bool";arg="vec3i_constructor"] + expected: FAIL + + [:decl="bool";arg="vec3f_constructor"] + expected: FAIL + + [:decl="bool";arg="vec3b_constructor"] + expected: FAIL + + [:decl="bool";arg="vec4u_constructor"] + expected: FAIL + + [:decl="bool";arg="vec4i_constructor"] + expected: FAIL + + [:decl="bool";arg="vec4f_constructor"] + expected: FAIL + + [:decl="bool";arg="vec4b_constructor"] + expected: FAIL + + [:decl="bool";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="bool";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="bool";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="bool";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="bool";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="bool";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="bool";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="bool";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="bool";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="bool";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="bool";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="bool";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="bool";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="bool";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="bool";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="bool";arg="array1_constructor"] + expected: FAIL + + [:decl="bool";arg="array2_constructor"] + expected: FAIL + + [:decl="bool";arg="array3_constructor"] + expected: FAIL + + [:decl="bool";arg="array4_constructor"] + expected: FAIL + + [:decl="bool";arg="array5_constructor"] + expected: FAIL + + [:decl="bool";arg="struct1_constructor"] + expected: FAIL + + [:decl="bool";arg="struct2_constructor"] + expected: FAIL + + [:decl="bool";arg="g_u32"] + expected: FAIL + + [:decl="bool";arg="g_i32"] + expected: FAIL + + [:decl="bool";arg="g_f32"] + expected: FAIL + + [:decl="bool";arg="g_bool"] + expected: FAIL + + [:decl="bool";arg="g_vec2"] + expected: FAIL + + [:decl="bool";arg="g_vec3"] + expected: FAIL + + [:decl="bool";arg="g_vec4"] + expected: FAIL + + [:decl="bool";arg="g_mat2x2"] + expected: FAIL + + [:decl="bool";arg="g_mat2x3"] + expected: FAIL + + [:decl="bool";arg="g_mat2x4"] + expected: FAIL + + [:decl="bool";arg="g_mat3x2"] + expected: FAIL + + [:decl="bool";arg="g_mat3x3"] + expected: FAIL + + [:decl="bool";arg="g_mat3x4"] + expected: FAIL + + [:decl="bool";arg="g_mat4x2"] + expected: FAIL + + [:decl="bool";arg="g_mat4x3"] + expected: FAIL + + [:decl="bool";arg="g_mat4x4"] + expected: FAIL + + [:decl="bool";arg="g_array1"] + expected: FAIL + + [:decl="bool";arg="g_array2"] + expected: FAIL + + [:decl="bool";arg="g_array3"] + expected: FAIL + + [:decl="bool";arg="g_array4"] + expected: FAIL + + [:decl="bool";arg="g_array5"] + expected: FAIL + + [:decl="bool";arg="g_constructible"] + expected: FAIL + + [:decl="bool";arg="g_struct_with_array"] + expected: FAIL + + [:decl="bool";arg="f_u32"] + expected: FAIL + + [:decl="bool";arg="f_i32"] + expected: FAIL + + [:decl="bool";arg="f_f32"] + expected: FAIL + + [:decl="bool";arg="f_bool"] + expected: FAIL + + [:decl="bool";arg="f_vec2"] + expected: FAIL + + [:decl="bool";arg="f_vec3"] + expected: FAIL + + [:decl="bool";arg="f_vec4"] + expected: FAIL + + [:decl="bool";arg="f_mat2x2"] + expected: FAIL + + [:decl="bool";arg="f_mat2x3"] + expected: FAIL + + [:decl="bool";arg="f_mat2x4"] + expected: FAIL + + [:decl="bool";arg="f_mat3x2"] + expected: FAIL + + [:decl="bool";arg="f_mat3x3"] + expected: FAIL + + [:decl="bool";arg="f_mat3x4"] + expected: FAIL + + [:decl="bool";arg="f_mat4x2"] + expected: FAIL + + [:decl="bool";arg="f_mat4x3"] + expected: FAIL + + [:decl="bool";arg="f_mat4x4"] + expected: FAIL + + [:decl="bool";arg="f_array1"] + expected: FAIL + + [:decl="bool";arg="f_array2"] + expected: FAIL + + [:decl="bool";arg="f_array3"] + expected: FAIL + + [:decl="bool";arg="f_array4"] + expected: FAIL + + [:decl="bool";arg="f_array5"] + expected: FAIL + + [:decl="bool";arg="f_constructible"] + expected: FAIL + + [:decl="bool";arg="f_struct_with_array"] + expected: FAIL + + [:decl="bool";arg="g_index_u32"] + expected: FAIL + + [:decl="bool";arg="g_index_i32"] + expected: FAIL + + [:decl="bool";arg="g_index_f32"] + expected: FAIL + + [:decl="bool";arg="g_index_bool"] + expected: FAIL + + [:decl="bool";arg="f_index_u32"] + expected: FAIL + + [:decl="bool";arg="f_index_i32"] + expected: FAIL + + [:decl="bool";arg="f_index_f32"] + expected: FAIL + + [:decl="bool";arg="f_index_bool"] + expected: FAIL + + [:decl="bool";arg="g_array_index_u32"] + expected: FAIL + + [:decl="bool";arg="g_array_index_i32"] + expected: FAIL + + [:decl="bool";arg="g_array_index_f32"] + expected: FAIL + + [:decl="bool";arg="g_array_index_bool"] + expected: FAIL + + [:decl="bool";arg="f_array_index_u32"] + expected: FAIL + + [:decl="bool";arg="f_array_index_i32"] + expected: FAIL + + [:decl="bool";arg="f_array_index_f32"] + expected: FAIL + + [:decl="bool";arg="f_array_index_bool"] + expected: FAIL + + [:decl="bool";arg="texture_sample"] + expected: FAIL + + [:decl="bool";arg="texture_depth"] + expected: FAIL + + [:decl="bool";arg="texture_multisampled"] + expected: FAIL + + [:decl="bool";arg="texture_storage"] + expected: FAIL + + [:decl="bool";arg="texture_external"] + expected: FAIL + + [:decl="bool";arg="sampler"] + expected: FAIL + + [:decl="bool";arg="sampler_comparison"] + expected: FAIL + + [:decl="bool";arg="ptr1"] + expected: FAIL + + [:decl="bool";arg="ptr2"] + expected: FAIL + + [:decl="bool";arg="ptr3"] + expected: FAIL + + [:decl="bool";arg="ptr4"] + expected: FAIL + + [:decl="bool";arg="ptr5"] + expected: FAIL + + [:decl="bool";arg="ptr6"] + expected: FAIL + + [:decl="bool";arg="ptr7"] + expected: FAIL + + [:decl="bool";arg="ptr8"] + expected: FAIL + + [:decl="bool";arg="ptr9"] + expected: FAIL + + [:decl="bool";arg="ptr10"] + expected: FAIL + + [:decl="bool";arg="ptr11"] + expected: FAIL + + [:decl="bool";arg="ptr12"] + expected: FAIL + + [:decl="vec2";arg="u32_literal"] + expected: FAIL + + [:decl="vec2";arg="i32_literal"] + expected: FAIL + + [:decl="vec2";arg="f32_literal"] + expected: FAIL + + [:decl="vec2";arg="bool_literal"] + expected: FAIL + + [:decl="vec2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="vec2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="vec2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="vec2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="vec2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="vec2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="vec2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="vec2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="vec2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="vec2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="vec2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="vec2";arg="array1_constructor"] + expected: FAIL + + [:decl="vec2";arg="array2_constructor"] + expected: FAIL + + [:decl="vec2";arg="array3_constructor"] + expected: FAIL + + [:decl="vec2";arg="array4_constructor"] + expected: FAIL + + [:decl="vec2";arg="array5_constructor"] + expected: FAIL + + [:decl="vec2";arg="struct1_constructor"] + expected: FAIL + + [:decl="vec2";arg="struct2_constructor"] + expected: FAIL + + [:decl="vec2";arg="g_u32"] + expected: FAIL + + [:decl="vec2";arg="g_i32"] + expected: FAIL + + [:decl="vec2";arg="g_f32"] + expected: FAIL + + [:decl="vec2";arg="g_bool"] + expected: FAIL + + [:decl="vec2";arg="g_vec2"] + expected: FAIL + + [:decl="vec2";arg="g_vec3"] + expected: FAIL + + [:decl="vec2";arg="g_vec4"] + expected: FAIL + + [:decl="vec2";arg="g_mat2x2"] + expected: FAIL + + [:decl="vec2";arg="g_mat2x3"] + expected: FAIL + + [:decl="vec2";arg="g_mat2x4"] + expected: FAIL + + [:decl="vec2";arg="g_mat3x2"] + expected: FAIL + + [:decl="vec2";arg="g_mat3x3"] + expected: FAIL + + [:decl="vec2";arg="g_mat3x4"] + expected: FAIL + + [:decl="vec2";arg="g_mat4x2"] + expected: FAIL + + [:decl="vec2";arg="g_mat4x3"] + expected: FAIL + + [:decl="vec2";arg="g_mat4x4"] + expected: FAIL + + [:decl="vec2";arg="g_array1"] + expected: FAIL + + [:decl="vec2";arg="g_array2"] + expected: FAIL + + [:decl="vec2";arg="g_array3"] + expected: FAIL + + [:decl="vec2";arg="g_array4"] + expected: FAIL + + [:decl="vec2";arg="g_array5"] + expected: FAIL + + [:decl="vec2";arg="g_constructible"] + expected: FAIL + + [:decl="vec2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="vec2";arg="f_u32"] + expected: FAIL + + [:decl="vec2";arg="f_i32"] + expected: FAIL + + [:decl="vec2";arg="f_f32"] + expected: FAIL + + [:decl="vec2";arg="f_bool"] + expected: FAIL + + [:decl="vec2";arg="f_vec2"] + expected: FAIL + + [:decl="vec2";arg="f_vec3"] + expected: FAIL + + [:decl="vec2";arg="f_vec4"] + expected: FAIL + + [:decl="vec2";arg="f_mat2x2"] + expected: FAIL + + [:decl="vec2";arg="f_mat2x3"] + expected: FAIL + + [:decl="vec2";arg="f_mat2x4"] + expected: FAIL + + [:decl="vec2";arg="f_mat3x2"] + expected: FAIL + + [:decl="vec2";arg="f_mat3x3"] + expected: FAIL + + [:decl="vec2";arg="f_mat3x4"] + expected: FAIL + + [:decl="vec2";arg="f_mat4x2"] + expected: FAIL + + [:decl="vec2";arg="f_mat4x3"] + expected: FAIL + + [:decl="vec2";arg="f_mat4x4"] + expected: FAIL + + [:decl="vec2";arg="f_array1"] + expected: FAIL + + [:decl="vec2";arg="f_array2"] + expected: FAIL + + [:decl="vec2";arg="f_array3"] + expected: FAIL + + [:decl="vec2";arg="f_array4"] + expected: FAIL + + [:decl="vec2";arg="f_array5"] + expected: FAIL + + [:decl="vec2";arg="f_constructible"] + expected: FAIL + + [:decl="vec2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="vec2";arg="g_index_u32"] + expected: FAIL + + [:decl="vec2";arg="g_index_i32"] + expected: FAIL + + [:decl="vec2";arg="g_index_f32"] + expected: FAIL + + [:decl="vec2";arg="g_index_bool"] + expected: FAIL + + [:decl="vec2";arg="f_index_u32"] + expected: FAIL + + [:decl="vec2";arg="f_index_i32"] + expected: FAIL + + [:decl="vec2";arg="f_index_f32"] + expected: FAIL + + [:decl="vec2";arg="f_index_bool"] + expected: FAIL + + [:decl="vec2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="vec2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="vec2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="vec2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="vec2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="vec2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="vec2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="vec2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="vec2";arg="texture_sample"] + expected: FAIL + + [:decl="vec2";arg="texture_depth"] + expected: FAIL + + [:decl="vec2";arg="texture_multisampled"] + expected: FAIL + + [:decl="vec2";arg="texture_storage"] + expected: FAIL + + [:decl="vec2";arg="texture_external"] + expected: FAIL + + [:decl="vec2";arg="sampler"] + expected: FAIL + + [:decl="vec2";arg="sampler_comparison"] + expected: FAIL + + [:decl="vec2";arg="ptr1"] + expected: FAIL + + [:decl="vec2";arg="ptr2"] + expected: FAIL + + [:decl="vec2";arg="ptr3"] + expected: FAIL + + [:decl="vec2";arg="ptr4"] + expected: FAIL + + [:decl="vec2";arg="ptr5"] + expected: FAIL + + [:decl="vec2";arg="ptr6"] + expected: FAIL + + [:decl="vec2";arg="ptr7"] + expected: FAIL + + [:decl="vec2";arg="ptr8"] + expected: FAIL + + [:decl="vec2";arg="ptr9"] + expected: FAIL + + [:decl="vec2";arg="ptr10"] + expected: FAIL + + [:decl="vec2";arg="ptr11"] + expected: FAIL + + [:decl="vec2";arg="ptr12"] + expected: FAIL + + [:decl="vec3";arg="u32_literal"] + expected: FAIL + + [:decl="vec3";arg="i32_literal"] + expected: FAIL + + [:decl="vec3";arg="f32_literal"] + expected: FAIL + + [:decl="vec3";arg="bool_literal"] + expected: FAIL + + [:decl="vec3";arg="abstract_int_literal"] + expected: FAIL + + [:decl="vec3";arg="abstract_float_literal"] + expected: FAIL + + [:decl="vec3";arg="vec2u_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec2i_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec2f_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec2b_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec3u_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec3i_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec3f_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec3b_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec4u_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec4i_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec4f_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec4b_constructor"] + expected: FAIL + + [:decl="vec3";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="vec3";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="vec3";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="vec3";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="vec3";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="vec3";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="vec3";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="vec3";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="vec3";arg="array1_constructor"] + expected: FAIL + + [:decl="vec3";arg="array2_constructor"] + expected: FAIL + + [:decl="vec3";arg="array3_constructor"] + expected: FAIL + + [:decl="vec3";arg="array4_constructor"] + expected: FAIL + + [:decl="vec3";arg="array5_constructor"] + expected: FAIL + + [:decl="vec3";arg="struct1_constructor"] + expected: FAIL + + [:decl="vec3";arg="struct2_constructor"] + expected: FAIL + + [:decl="vec3";arg="g_u32"] + expected: FAIL + + [:decl="vec3";arg="g_i32"] + expected: FAIL + + [:decl="vec3";arg="g_f32"] + expected: FAIL + + [:decl="vec3";arg="g_bool"] + expected: FAIL + + [:decl="vec3";arg="g_vec2"] + expected: FAIL + + [:decl="vec3";arg="g_vec3"] + expected: FAIL + + [:decl="vec3";arg="g_vec4"] + expected: FAIL + + [:decl="vec3";arg="g_mat2x2"] + expected: FAIL + + [:decl="vec3";arg="g_mat2x3"] + expected: FAIL + + [:decl="vec3";arg="g_mat2x4"] + expected: FAIL + + [:decl="vec3";arg="g_mat3x2"] + expected: FAIL + + [:decl="vec3";arg="g_mat3x3"] + expected: FAIL + + [:decl="vec3";arg="g_mat3x4"] + expected: FAIL + + [:decl="vec3";arg="g_mat4x2"] + expected: FAIL + + [:decl="vec3";arg="g_mat4x3"] + expected: FAIL + + [:decl="vec3";arg="g_mat4x4"] + expected: FAIL + + [:decl="vec3";arg="g_array1"] + expected: FAIL + + [:decl="vec3";arg="g_array2"] + expected: FAIL + + [:decl="vec3";arg="g_array3"] + expected: FAIL + + [:decl="vec3";arg="g_array4"] + expected: FAIL + + [:decl="vec3";arg="g_array5"] + expected: FAIL + + [:decl="vec3";arg="g_constructible"] + expected: FAIL + + [:decl="vec3";arg="g_struct_with_array"] + expected: FAIL + + [:decl="vec3";arg="f_u32"] + expected: FAIL + + [:decl="vec3";arg="f_i32"] + expected: FAIL + + [:decl="vec3";arg="f_f32"] + expected: FAIL + + [:decl="vec3";arg="f_bool"] + expected: FAIL + + [:decl="vec3";arg="f_vec2"] + expected: FAIL + + [:decl="vec3";arg="f_vec3"] + expected: FAIL + + [:decl="vec3";arg="f_vec4"] + expected: FAIL + + [:decl="vec3";arg="f_mat2x2"] + expected: FAIL + + [:decl="vec3";arg="f_mat2x3"] + expected: FAIL + + [:decl="vec3";arg="f_mat2x4"] + expected: FAIL + + [:decl="vec3";arg="f_mat3x2"] + expected: FAIL + + [:decl="vec3";arg="f_mat3x3"] + expected: FAIL + + [:decl="vec3";arg="f_mat3x4"] + expected: FAIL + + [:decl="vec3";arg="f_mat4x2"] + expected: FAIL + + [:decl="vec3";arg="f_mat4x3"] + expected: FAIL + + [:decl="vec3";arg="f_mat4x4"] + expected: FAIL + + [:decl="vec3";arg="f_array1"] + expected: FAIL + + [:decl="vec3";arg="f_array2"] + expected: FAIL + + [:decl="vec3";arg="f_array3"] + expected: FAIL + + [:decl="vec3";arg="f_array4"] + expected: FAIL + + [:decl="vec3";arg="f_array5"] + expected: FAIL + + [:decl="vec3";arg="f_constructible"] + expected: FAIL + + [:decl="vec3";arg="f_struct_with_array"] + expected: FAIL + + [:decl="vec3";arg="g_index_u32"] + expected: FAIL + + [:decl="vec3";arg="g_index_i32"] + expected: FAIL + + [:decl="vec3";arg="g_index_f32"] + expected: FAIL + + [:decl="vec3";arg="g_index_bool"] + expected: FAIL + + [:decl="vec3";arg="f_index_u32"] + expected: FAIL + + [:decl="vec3";arg="f_index_i32"] + expected: FAIL + + [:decl="vec3";arg="f_index_f32"] + expected: FAIL + + [:decl="vec3";arg="f_index_bool"] + expected: FAIL + + [:decl="vec3";arg="g_array_index_u32"] + expected: FAIL + + [:decl="vec3";arg="g_array_index_i32"] + expected: FAIL + + [:decl="vec3";arg="g_array_index_f32"] + expected: FAIL + + [:decl="vec3";arg="g_array_index_bool"] + expected: FAIL + + [:decl="vec3";arg="f_array_index_u32"] + expected: FAIL + + [:decl="vec3";arg="f_array_index_i32"] + expected: FAIL + + [:decl="vec3";arg="f_array_index_f32"] + expected: FAIL + + [:decl="vec3";arg="f_array_index_bool"] + expected: FAIL + + [:decl="vec3";arg="texture_sample"] + expected: FAIL + + [:decl="vec3";arg="texture_depth"] + expected: FAIL + + [:decl="vec3";arg="texture_multisampled"] + expected: FAIL + + [:decl="vec3";arg="texture_storage"] + expected: FAIL + + [:decl="vec3";arg="texture_external"] + expected: FAIL + + [:decl="vec3";arg="sampler"] + expected: FAIL + + [:decl="vec3";arg="sampler_comparison"] + expected: FAIL + + [:decl="vec3";arg="ptr1"] + expected: FAIL + + [:decl="vec3";arg="ptr2"] + expected: FAIL + + [:decl="vec3";arg="ptr3"] + expected: FAIL + + [:decl="vec3";arg="ptr4"] + expected: FAIL + + [:decl="vec3";arg="ptr5"] + expected: FAIL + + [:decl="vec3";arg="ptr6"] + expected: FAIL + + [:decl="vec3";arg="ptr7"] + expected: FAIL + + [:decl="vec3";arg="ptr8"] + expected: FAIL + + [:decl="vec3";arg="ptr9"] + expected: FAIL + + [:decl="vec3";arg="ptr10"] + expected: FAIL + + [:decl="vec3";arg="ptr11"] + expected: FAIL + + [:decl="vec3";arg="ptr12"] + expected: FAIL + + [:decl="vec4";arg="u32_literal"] + expected: FAIL + + [:decl="vec4";arg="i32_literal"] + expected: FAIL + + [:decl="vec4";arg="f32_literal"] + expected: FAIL + + [:decl="vec4";arg="bool_literal"] + expected: FAIL + + [:decl="vec4";arg="abstract_int_literal"] + expected: FAIL + + [:decl="vec4";arg="abstract_float_literal"] + expected: FAIL + + [:decl="vec4";arg="vec2u_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec2i_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec2f_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec2b_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec3u_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec3i_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec3f_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec3b_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec4u_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec4i_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec4f_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec4b_constructor"] + expected: FAIL + + [:decl="vec4";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="vec4";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="vec4";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="vec4";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="vec4";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="vec4";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="vec4";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="vec4";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="vec4";arg="array1_constructor"] + expected: FAIL + + [:decl="vec4";arg="array2_constructor"] + expected: FAIL + + [:decl="vec4";arg="array3_constructor"] + expected: FAIL + + [:decl="vec4";arg="array4_constructor"] + expected: FAIL + + [:decl="vec4";arg="array5_constructor"] + expected: FAIL + + [:decl="vec4";arg="struct1_constructor"] + expected: FAIL + + [:decl="vec4";arg="struct2_constructor"] + expected: FAIL + + [:decl="vec4";arg="g_u32"] + expected: FAIL + + [:decl="vec4";arg="g_i32"] + expected: FAIL + + [:decl="vec4";arg="g_f32"] + expected: FAIL + + [:decl="vec4";arg="g_bool"] + expected: FAIL + + [:decl="vec4";arg="g_vec2"] + expected: FAIL + + [:decl="vec4";arg="g_vec3"] + expected: FAIL + + [:decl="vec4";arg="g_vec4"] + expected: FAIL + + [:decl="vec4";arg="g_mat2x2"] + expected: FAIL + + [:decl="vec4";arg="g_mat2x3"] + expected: FAIL + + [:decl="vec4";arg="g_mat2x4"] + expected: FAIL + + [:decl="vec4";arg="g_mat3x2"] + expected: FAIL + + [:decl="vec4";arg="g_mat3x3"] + expected: FAIL + + [:decl="vec4";arg="g_mat3x4"] + expected: FAIL + + [:decl="vec4";arg="g_mat4x2"] + expected: FAIL + + [:decl="vec4";arg="g_mat4x3"] + expected: FAIL + + [:decl="vec4";arg="g_mat4x4"] + expected: FAIL + + [:decl="vec4";arg="g_array1"] + expected: FAIL + + [:decl="vec4";arg="g_array2"] + expected: FAIL + + [:decl="vec4";arg="g_array3"] + expected: FAIL + + [:decl="vec4";arg="g_array4"] + expected: FAIL + + [:decl="vec4";arg="g_array5"] + expected: FAIL + + [:decl="vec4";arg="g_constructible"] + expected: FAIL + + [:decl="vec4";arg="g_struct_with_array"] + expected: FAIL + + [:decl="vec4";arg="f_u32"] + expected: FAIL + + [:decl="vec4";arg="f_i32"] + expected: FAIL + + [:decl="vec4";arg="f_f32"] + expected: FAIL + + [:decl="vec4";arg="f_bool"] + expected: FAIL + + [:decl="vec4";arg="f_vec2"] + expected: FAIL + + [:decl="vec4";arg="f_vec3"] + expected: FAIL + + [:decl="vec4";arg="f_vec4"] + expected: FAIL + + [:decl="vec4";arg="f_mat2x2"] + expected: FAIL + + [:decl="vec4";arg="f_mat2x3"] + expected: FAIL + + [:decl="vec4";arg="f_mat2x4"] + expected: FAIL + + [:decl="vec4";arg="f_mat3x2"] + expected: FAIL + + [:decl="vec4";arg="f_mat3x3"] + expected: FAIL + + [:decl="vec4";arg="f_mat3x4"] + expected: FAIL + + [:decl="vec4";arg="f_mat4x2"] + expected: FAIL + + [:decl="vec4";arg="f_mat4x3"] + expected: FAIL + + [:decl="vec4";arg="f_mat4x4"] + expected: FAIL + + [:decl="vec4";arg="f_array1"] + expected: FAIL + + [:decl="vec4";arg="f_array2"] + expected: FAIL + + [:decl="vec4";arg="f_array3"] + expected: FAIL + + [:decl="vec4";arg="f_array4"] + expected: FAIL + + [:decl="vec4";arg="f_array5"] + expected: FAIL + + [:decl="vec4";arg="f_constructible"] + expected: FAIL + + [:decl="vec4";arg="f_struct_with_array"] + expected: FAIL + + [:decl="vec4";arg="g_index_u32"] + expected: FAIL + + [:decl="vec4";arg="g_index_i32"] + expected: FAIL + + [:decl="vec4";arg="g_index_f32"] + expected: FAIL + + [:decl="vec4";arg="g_index_bool"] + expected: FAIL + + [:decl="vec4";arg="f_index_u32"] + expected: FAIL + + [:decl="vec4";arg="f_index_i32"] + expected: FAIL + + [:decl="vec4";arg="f_index_f32"] + expected: FAIL + + [:decl="vec4";arg="f_index_bool"] + expected: FAIL + + [:decl="vec4";arg="g_array_index_u32"] + expected: FAIL + + [:decl="vec4";arg="g_array_index_i32"] + expected: FAIL + + [:decl="vec4";arg="g_array_index_f32"] + expected: FAIL + + [:decl="vec4";arg="g_array_index_bool"] + expected: FAIL + + [:decl="vec4";arg="f_array_index_u32"] + expected: FAIL + + [:decl="vec4";arg="f_array_index_i32"] + expected: FAIL + + [:decl="vec4";arg="f_array_index_f32"] + expected: FAIL + + [:decl="vec4";arg="f_array_index_bool"] + expected: FAIL + + [:decl="vec4";arg="texture_sample"] + expected: FAIL + + [:decl="vec4";arg="texture_depth"] + expected: FAIL + + [:decl="vec4";arg="texture_multisampled"] + expected: FAIL + + [:decl="vec4";arg="texture_storage"] + expected: FAIL + + [:decl="vec4";arg="texture_external"] + expected: FAIL + + [:decl="vec4";arg="sampler"] + expected: FAIL + + [:decl="vec4";arg="sampler_comparison"] + expected: FAIL + + [:decl="vec4";arg="ptr1"] + expected: FAIL + + [:decl="vec4";arg="ptr2"] + expected: FAIL + + [:decl="vec4";arg="ptr3"] + expected: FAIL + + [:decl="vec4";arg="ptr4"] + expected: FAIL + + [:decl="vec4";arg="ptr5"] + expected: FAIL + + [:decl="vec4";arg="ptr6"] + expected: FAIL + + [:decl="vec4";arg="ptr7"] + expected: FAIL + + [:decl="vec4";arg="ptr8"] + expected: FAIL + + [:decl="vec4";arg="ptr9"] + expected: FAIL + + [:decl="vec4";arg="ptr10"] + expected: FAIL + + [:decl="vec4";arg="ptr11"] + expected: FAIL + + [:decl="vec4";arg="ptr12"] + expected: FAIL + + [:decl="mat2x2";arg="u32_literal"] + expected: FAIL + + [:decl="mat2x2";arg="i32_literal"] + expected: FAIL + + [:decl="mat2x2";arg="f32_literal"] + expected: FAIL + + [:decl="mat2x2";arg="bool_literal"] + expected: FAIL + + [:decl="mat2x2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat2x2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat2x2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat2x2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat2x2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat2x2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat2x2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat2x2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat2x2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="array1_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="array2_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="array3_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="array4_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="array5_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat2x2";arg="g_u32"] + expected: FAIL + + [:decl="mat2x2";arg="g_i32"] + expected: FAIL + + [:decl="mat2x2";arg="g_f32"] + expected: FAIL + + [:decl="mat2x2";arg="g_bool"] + expected: FAIL + + [:decl="mat2x2";arg="g_vec2"] + expected: FAIL + + [:decl="mat2x2";arg="g_vec3"] + expected: FAIL + + [:decl="mat2x2";arg="g_vec4"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat2x2";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat2x2";arg="g_array1"] + expected: FAIL + + [:decl="mat2x2";arg="g_array2"] + expected: FAIL + + [:decl="mat2x2";arg="g_array3"] + expected: FAIL + + [:decl="mat2x2";arg="g_array4"] + expected: FAIL + + [:decl="mat2x2";arg="g_array5"] + expected: FAIL + + [:decl="mat2x2";arg="g_constructible"] + expected: FAIL + + [:decl="mat2x2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat2x2";arg="f_u32"] + expected: FAIL + + [:decl="mat2x2";arg="f_i32"] + expected: FAIL + + [:decl="mat2x2";arg="f_f32"] + expected: FAIL + + [:decl="mat2x2";arg="f_bool"] + expected: FAIL + + [:decl="mat2x2";arg="f_vec2"] + expected: FAIL + + [:decl="mat2x2";arg="f_vec3"] + expected: FAIL + + [:decl="mat2x2";arg="f_vec4"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat2x2";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat2x2";arg="f_array1"] + expected: FAIL + + [:decl="mat2x2";arg="f_array2"] + expected: FAIL + + [:decl="mat2x2";arg="f_array3"] + expected: FAIL + + [:decl="mat2x2";arg="f_array4"] + expected: FAIL + + [:decl="mat2x2";arg="f_array5"] + expected: FAIL + + [:decl="mat2x2";arg="f_constructible"] + expected: FAIL + + [:decl="mat2x2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat2x2";arg="g_index_u32"] + expected: FAIL + + [:decl="mat2x2";arg="g_index_i32"] + expected: FAIL + + [:decl="mat2x2";arg="g_index_f32"] + expected: FAIL + + [:decl="mat2x2";arg="g_index_bool"] + expected: FAIL + + [:decl="mat2x2";arg="f_index_u32"] + expected: FAIL + + [:decl="mat2x2";arg="f_index_i32"] + expected: FAIL + + [:decl="mat2x2";arg="f_index_f32"] + expected: FAIL + + [:decl="mat2x2";arg="f_index_bool"] + expected: FAIL + + [:decl="mat2x2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat2x2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat2x2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat2x2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat2x2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat2x2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat2x2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat2x2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat2x2";arg="texture_sample"] + expected: FAIL + + [:decl="mat2x2";arg="texture_depth"] + expected: FAIL + + [:decl="mat2x2";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat2x2";arg="texture_storage"] + expected: FAIL + + [:decl="mat2x2";arg="texture_external"] + expected: FAIL + + [:decl="mat2x2";arg="sampler"] + expected: FAIL + + [:decl="mat2x2";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat2x2";arg="ptr1"] + expected: FAIL + + [:decl="mat2x2";arg="ptr2"] + expected: FAIL + + [:decl="mat2x2";arg="ptr3"] + expected: FAIL + + [:decl="mat2x2";arg="ptr4"] + expected: FAIL + + [:decl="mat2x2";arg="ptr5"] + expected: FAIL + + [:decl="mat2x2";arg="ptr6"] + expected: FAIL + + [:decl="mat2x2";arg="ptr7"] + expected: FAIL + + [:decl="mat2x2";arg="ptr8"] + expected: FAIL + + [:decl="mat2x2";arg="ptr9"] + expected: FAIL + + [:decl="mat2x2";arg="ptr10"] + expected: FAIL + + [:decl="mat2x2";arg="ptr11"] + expected: FAIL + + [:decl="mat2x2";arg="ptr12"] + expected: FAIL + + [:decl="mat2x3";arg="u32_literal"] + expected: FAIL + + [:decl="mat2x3";arg="i32_literal"] + expected: FAIL + + [:decl="mat2x3";arg="f32_literal"] + expected: FAIL + + [:decl="mat2x3";arg="bool_literal"] + expected: FAIL + + [:decl="mat2x3";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat2x3";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat2x3";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat2x3";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat2x3";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat2x3";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat2x3";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat2x3";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat2x3";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="array1_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="array2_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="array3_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="array4_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="array5_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat2x3";arg="g_u32"] + expected: FAIL + + [:decl="mat2x3";arg="g_i32"] + expected: FAIL + + [:decl="mat2x3";arg="g_f32"] + expected: FAIL + + [:decl="mat2x3";arg="g_bool"] + expected: FAIL + + [:decl="mat2x3";arg="g_vec2"] + expected: FAIL + + [:decl="mat2x3";arg="g_vec3"] + expected: FAIL + + [:decl="mat2x3";arg="g_vec4"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat2x3";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat2x3";arg="g_array1"] + expected: FAIL + + [:decl="mat2x3";arg="g_array2"] + expected: FAIL + + [:decl="mat2x3";arg="g_array3"] + expected: FAIL + + [:decl="mat2x3";arg="g_array4"] + expected: FAIL + + [:decl="mat2x3";arg="g_array5"] + expected: FAIL + + [:decl="mat2x3";arg="g_constructible"] + expected: FAIL + + [:decl="mat2x3";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat2x3";arg="f_u32"] + expected: FAIL + + [:decl="mat2x3";arg="f_i32"] + expected: FAIL + + [:decl="mat2x3";arg="f_f32"] + expected: FAIL + + [:decl="mat2x3";arg="f_bool"] + expected: FAIL + + [:decl="mat2x3";arg="f_vec2"] + expected: FAIL + + [:decl="mat2x3";arg="f_vec3"] + expected: FAIL + + [:decl="mat2x3";arg="f_vec4"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat2x3";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat2x3";arg="f_array1"] + expected: FAIL + + [:decl="mat2x3";arg="f_array2"] + expected: FAIL + + [:decl="mat2x3";arg="f_array3"] + expected: FAIL + + [:decl="mat2x3";arg="f_array4"] + expected: FAIL + + [:decl="mat2x3";arg="f_array5"] + expected: FAIL + + [:decl="mat2x3";arg="f_constructible"] + expected: FAIL + + [:decl="mat2x3";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat2x3";arg="g_index_u32"] + expected: FAIL + + [:decl="mat2x3";arg="g_index_i32"] + expected: FAIL + + [:decl="mat2x3";arg="g_index_f32"] + expected: FAIL + + [:decl="mat2x3";arg="g_index_bool"] + expected: FAIL + + [:decl="mat2x3";arg="f_index_u32"] + expected: FAIL + + [:decl="mat2x3";arg="f_index_i32"] + expected: FAIL + + [:decl="mat2x3";arg="f_index_f32"] + expected: FAIL + + [:decl="mat2x3";arg="f_index_bool"] + expected: FAIL + + [:decl="mat2x3";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat2x3";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat2x3";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat2x3";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat2x3";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat2x3";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat2x3";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat2x3";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat2x3";arg="texture_sample"] + expected: FAIL + + [:decl="mat2x3";arg="texture_depth"] + expected: FAIL + + [:decl="mat2x3";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat2x3";arg="texture_storage"] + expected: FAIL + + [:decl="mat2x3";arg="texture_external"] + expected: FAIL + + [:decl="mat2x3";arg="sampler"] + expected: FAIL + + [:decl="mat2x3";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat2x3";arg="ptr1"] + expected: FAIL + + [:decl="mat2x3";arg="ptr2"] + expected: FAIL + + [:decl="mat2x3";arg="ptr3"] + expected: FAIL + + [:decl="mat2x3";arg="ptr4"] + expected: FAIL + + [:decl="mat2x3";arg="ptr5"] + expected: FAIL + + [:decl="mat2x3";arg="ptr6"] + expected: FAIL + + [:decl="mat2x3";arg="ptr7"] + expected: FAIL + + [:decl="mat2x3";arg="ptr8"] + expected: FAIL + + [:decl="mat2x3";arg="ptr9"] + expected: FAIL + + [:decl="mat2x3";arg="ptr10"] + expected: FAIL + + [:decl="mat2x3";arg="ptr11"] + expected: FAIL + + [:decl="mat2x3";arg="ptr12"] + expected: FAIL + + [:decl="mat2x4";arg="u32_literal"] + expected: FAIL + + [:decl="mat2x4";arg="i32_literal"] + expected: FAIL + + [:decl="mat2x4";arg="f32_literal"] + expected: FAIL + + [:decl="mat2x4";arg="bool_literal"] + expected: FAIL + + [:decl="mat2x4";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat2x4";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat2x4";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat2x4";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat2x4";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat2x4";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat2x4";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat2x4";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat2x4";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="array1_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="array2_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="array3_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="array4_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="array5_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat2x4";arg="g_u32"] + expected: FAIL + + [:decl="mat2x4";arg="g_i32"] + expected: FAIL + + [:decl="mat2x4";arg="g_f32"] + expected: FAIL + + [:decl="mat2x4";arg="g_bool"] + expected: FAIL + + [:decl="mat2x4";arg="g_vec2"] + expected: FAIL + + [:decl="mat2x4";arg="g_vec3"] + expected: FAIL + + [:decl="mat2x4";arg="g_vec4"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat2x4";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat2x4";arg="g_array1"] + expected: FAIL + + [:decl="mat2x4";arg="g_array2"] + expected: FAIL + + [:decl="mat2x4";arg="g_array3"] + expected: FAIL + + [:decl="mat2x4";arg="g_array4"] + expected: FAIL + + [:decl="mat2x4";arg="g_array5"] + expected: FAIL + + [:decl="mat2x4";arg="g_constructible"] + expected: FAIL + + [:decl="mat2x4";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat2x4";arg="f_u32"] + expected: FAIL + + [:decl="mat2x4";arg="f_i32"] + expected: FAIL + + [:decl="mat2x4";arg="f_f32"] + expected: FAIL + + [:decl="mat2x4";arg="f_bool"] + expected: FAIL + + [:decl="mat2x4";arg="f_vec2"] + expected: FAIL + + [:decl="mat2x4";arg="f_vec3"] + expected: FAIL + + [:decl="mat2x4";arg="f_vec4"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat2x4";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat2x4";arg="f_array1"] + expected: FAIL + + [:decl="mat2x4";arg="f_array2"] + expected: FAIL + + [:decl="mat2x4";arg="f_array3"] + expected: FAIL + + [:decl="mat2x4";arg="f_array4"] + expected: FAIL + + [:decl="mat2x4";arg="f_array5"] + expected: FAIL + + [:decl="mat2x4";arg="f_constructible"] + expected: FAIL + + [:decl="mat2x4";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat2x4";arg="g_index_u32"] + expected: FAIL + + [:decl="mat2x4";arg="g_index_i32"] + expected: FAIL + + [:decl="mat2x4";arg="g_index_f32"] + expected: FAIL + + [:decl="mat2x4";arg="g_index_bool"] + expected: FAIL + + [:decl="mat2x4";arg="f_index_u32"] + expected: FAIL + + [:decl="mat2x4";arg="f_index_i32"] + expected: FAIL + + [:decl="mat2x4";arg="f_index_f32"] + expected: FAIL + + [:decl="mat2x4";arg="f_index_bool"] + expected: FAIL + + [:decl="mat2x4";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat2x4";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat2x4";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat2x4";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat2x4";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat2x4";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat2x4";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat2x4";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat2x4";arg="texture_sample"] + expected: FAIL + + [:decl="mat2x4";arg="texture_depth"] + expected: FAIL + + [:decl="mat2x4";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat2x4";arg="texture_storage"] + expected: FAIL + + [:decl="mat2x4";arg="texture_external"] + expected: FAIL + + [:decl="mat2x4";arg="sampler"] + expected: FAIL + + [:decl="mat2x4";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat2x4";arg="ptr1"] + expected: FAIL + + [:decl="mat2x4";arg="ptr2"] + expected: FAIL + + [:decl="mat2x4";arg="ptr3"] + expected: FAIL + + [:decl="mat2x4";arg="ptr4"] + expected: FAIL + + [:decl="mat2x4";arg="ptr5"] + expected: FAIL + + [:decl="mat2x4";arg="ptr6"] + expected: FAIL + + [:decl="mat2x4";arg="ptr7"] + expected: FAIL + + [:decl="mat2x4";arg="ptr8"] + expected: FAIL + + [:decl="mat2x4";arg="ptr9"] + expected: FAIL + + [:decl="mat2x4";arg="ptr10"] + expected: FAIL + + [:decl="mat2x4";arg="ptr11"] + expected: FAIL + + [:decl="mat2x4";arg="ptr12"] + expected: FAIL + + [:decl="mat3x2";arg="u32_literal"] + expected: FAIL + + [:decl="mat3x2";arg="i32_literal"] + expected: FAIL + + [:decl="mat3x2";arg="f32_literal"] + expected: FAIL + + [:decl="mat3x2";arg="bool_literal"] + expected: FAIL + + [:decl="mat3x2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat3x2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat3x2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat3x2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat3x2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat3x2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat3x2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat3x2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat3x2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="array1_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="array2_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="array3_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="array4_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="array5_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat3x2";arg="g_u32"] + expected: FAIL + + [:decl="mat3x2";arg="g_i32"] + expected: FAIL + + [:decl="mat3x2";arg="g_f32"] + expected: FAIL + + [:decl="mat3x2";arg="g_bool"] + expected: FAIL + + [:decl="mat3x2";arg="g_vec2"] + expected: FAIL + + [:decl="mat3x2";arg="g_vec3"] + expected: FAIL + + [:decl="mat3x2";arg="g_vec4"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat3x2";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat3x2";arg="g_array1"] + expected: FAIL + + [:decl="mat3x2";arg="g_array2"] + expected: FAIL + + [:decl="mat3x2";arg="g_array3"] + expected: FAIL + + [:decl="mat3x2";arg="g_array4"] + expected: FAIL + + [:decl="mat3x2";arg="g_array5"] + expected: FAIL + + [:decl="mat3x2";arg="g_constructible"] + expected: FAIL + + [:decl="mat3x2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat3x2";arg="f_u32"] + expected: FAIL + + [:decl="mat3x2";arg="f_i32"] + expected: FAIL + + [:decl="mat3x2";arg="f_f32"] + expected: FAIL + + [:decl="mat3x2";arg="f_bool"] + expected: FAIL + + [:decl="mat3x2";arg="f_vec2"] + expected: FAIL + + [:decl="mat3x2";arg="f_vec3"] + expected: FAIL + + [:decl="mat3x2";arg="f_vec4"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat3x2";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat3x2";arg="f_array1"] + expected: FAIL + + [:decl="mat3x2";arg="f_array2"] + expected: FAIL + + [:decl="mat3x2";arg="f_array3"] + expected: FAIL + + [:decl="mat3x2";arg="f_array4"] + expected: FAIL + + [:decl="mat3x2";arg="f_array5"] + expected: FAIL + + [:decl="mat3x2";arg="f_constructible"] + expected: FAIL + + [:decl="mat3x2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat3x2";arg="g_index_u32"] + expected: FAIL + + [:decl="mat3x2";arg="g_index_i32"] + expected: FAIL + + [:decl="mat3x2";arg="g_index_f32"] + expected: FAIL + + [:decl="mat3x2";arg="g_index_bool"] + expected: FAIL + + [:decl="mat3x2";arg="f_index_u32"] + expected: FAIL + + [:decl="mat3x2";arg="f_index_i32"] + expected: FAIL + + [:decl="mat3x2";arg="f_index_f32"] + expected: FAIL + + [:decl="mat3x2";arg="f_index_bool"] + expected: FAIL + + [:decl="mat3x2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat3x2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat3x2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat3x2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat3x2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat3x2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat3x2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat3x2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat3x2";arg="texture_sample"] + expected: FAIL + + [:decl="mat3x2";arg="texture_depth"] + expected: FAIL + + [:decl="mat3x2";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat3x2";arg="texture_storage"] + expected: FAIL + + [:decl="mat3x2";arg="texture_external"] + expected: FAIL + + [:decl="mat3x2";arg="sampler"] + expected: FAIL + + [:decl="mat3x2";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat3x2";arg="ptr1"] + expected: FAIL + + [:decl="mat3x2";arg="ptr2"] + expected: FAIL + + [:decl="mat3x2";arg="ptr3"] + expected: FAIL + + [:decl="mat3x2";arg="ptr4"] + expected: FAIL + + [:decl="mat3x2";arg="ptr5"] + expected: FAIL + + [:decl="mat3x2";arg="ptr6"] + expected: FAIL + + [:decl="mat3x2";arg="ptr7"] + expected: FAIL + + [:decl="mat3x2";arg="ptr8"] + expected: FAIL + + [:decl="mat3x2";arg="ptr9"] + expected: FAIL + + [:decl="mat3x2";arg="ptr10"] + expected: FAIL + + [:decl="mat3x2";arg="ptr11"] + expected: FAIL + + [:decl="mat3x2";arg="ptr12"] + expected: FAIL + + [:decl="mat3x3";arg="u32_literal"] + expected: FAIL + + [:decl="mat3x3";arg="i32_literal"] + expected: FAIL + + [:decl="mat3x3";arg="f32_literal"] + expected: FAIL + + [:decl="mat3x3";arg="bool_literal"] + expected: FAIL + + [:decl="mat3x3";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat3x3";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat3x3";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat3x3";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat3x3";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat3x3";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat3x3";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat3x3";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat3x3";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="array1_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="array2_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="array3_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="array4_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="array5_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat3x3";arg="g_u32"] + expected: FAIL + + [:decl="mat3x3";arg="g_i32"] + expected: FAIL + + [:decl="mat3x3";arg="g_f32"] + expected: FAIL + + [:decl="mat3x3";arg="g_bool"] + expected: FAIL + + [:decl="mat3x3";arg="g_vec2"] + expected: FAIL + + [:decl="mat3x3";arg="g_vec3"] + expected: FAIL + + [:decl="mat3x3";arg="g_vec4"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat3x3";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat3x3";arg="g_array1"] + expected: FAIL + + [:decl="mat3x3";arg="g_array2"] + expected: FAIL + + [:decl="mat3x3";arg="g_array3"] + expected: FAIL + + [:decl="mat3x3";arg="g_array4"] + expected: FAIL + + [:decl="mat3x3";arg="g_array5"] + expected: FAIL + + [:decl="mat3x3";arg="g_constructible"] + expected: FAIL + + [:decl="mat3x3";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat3x3";arg="f_u32"] + expected: FAIL + + [:decl="mat3x3";arg="f_i32"] + expected: FAIL + + [:decl="mat3x3";arg="f_f32"] + expected: FAIL + + [:decl="mat3x3";arg="f_bool"] + expected: FAIL + + [:decl="mat3x3";arg="f_vec2"] + expected: FAIL + + [:decl="mat3x3";arg="f_vec3"] + expected: FAIL + + [:decl="mat3x3";arg="f_vec4"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat3x3";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat3x3";arg="f_array1"] + expected: FAIL + + [:decl="mat3x3";arg="f_array2"] + expected: FAIL + + [:decl="mat3x3";arg="f_array3"] + expected: FAIL + + [:decl="mat3x3";arg="f_array4"] + expected: FAIL + + [:decl="mat3x3";arg="f_array5"] + expected: FAIL + + [:decl="mat3x3";arg="f_constructible"] + expected: FAIL + + [:decl="mat3x3";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat3x3";arg="g_index_u32"] + expected: FAIL + + [:decl="mat3x3";arg="g_index_i32"] + expected: FAIL + + [:decl="mat3x3";arg="g_index_f32"] + expected: FAIL + + [:decl="mat3x3";arg="g_index_bool"] + expected: FAIL + + [:decl="mat3x3";arg="f_index_u32"] + expected: FAIL + + [:decl="mat3x3";arg="f_index_i32"] + expected: FAIL + + [:decl="mat3x3";arg="f_index_f32"] + expected: FAIL + + [:decl="mat3x3";arg="f_index_bool"] + expected: FAIL + + [:decl="mat3x3";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat3x3";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat3x3";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat3x3";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat3x3";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat3x3";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat3x3";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat3x3";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat3x3";arg="texture_sample"] + expected: FAIL + + [:decl="mat3x3";arg="texture_depth"] + expected: FAIL + + [:decl="mat3x3";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat3x3";arg="texture_storage"] + expected: FAIL + + [:decl="mat3x3";arg="texture_external"] + expected: FAIL + + [:decl="mat3x3";arg="sampler"] + expected: FAIL + + [:decl="mat3x3";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat3x3";arg="ptr1"] + expected: FAIL + + [:decl="mat3x3";arg="ptr2"] + expected: FAIL + + [:decl="mat3x3";arg="ptr3"] + expected: FAIL + + [:decl="mat3x3";arg="ptr4"] + expected: FAIL + + [:decl="mat3x3";arg="ptr5"] + expected: FAIL + + [:decl="mat3x3";arg="ptr6"] + expected: FAIL + + [:decl="mat3x3";arg="ptr7"] + expected: FAIL + + [:decl="mat3x3";arg="ptr8"] + expected: FAIL + + [:decl="mat3x3";arg="ptr9"] + expected: FAIL + + [:decl="mat3x3";arg="ptr10"] + expected: FAIL + + [:decl="mat3x3";arg="ptr11"] + expected: FAIL + + [:decl="mat3x3";arg="ptr12"] + expected: FAIL + + [:decl="mat3x4";arg="u32_literal"] + expected: FAIL + + [:decl="mat3x4";arg="i32_literal"] + expected: FAIL + + [:decl="mat3x4";arg="f32_literal"] + expected: FAIL + + [:decl="mat3x4";arg="bool_literal"] + expected: FAIL + + [:decl="mat3x4";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat3x4";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat3x4";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat3x4";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat3x4";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat3x4";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat3x4";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat3x4";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat3x4";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="array1_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="array2_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="array3_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="array4_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="array5_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat3x4";arg="g_u32"] + expected: FAIL + + [:decl="mat3x4";arg="g_i32"] + expected: FAIL + + [:decl="mat3x4";arg="g_f32"] + expected: FAIL + + [:decl="mat3x4";arg="g_bool"] + expected: FAIL + + [:decl="mat3x4";arg="g_vec2"] + expected: FAIL + + [:decl="mat3x4";arg="g_vec3"] + expected: FAIL + + [:decl="mat3x4";arg="g_vec4"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat3x4";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat3x4";arg="g_array1"] + expected: FAIL + + [:decl="mat3x4";arg="g_array2"] + expected: FAIL + + [:decl="mat3x4";arg="g_array3"] + expected: FAIL + + [:decl="mat3x4";arg="g_array4"] + expected: FAIL + + [:decl="mat3x4";arg="g_array5"] + expected: FAIL + + [:decl="mat3x4";arg="g_constructible"] + expected: FAIL + + [:decl="mat3x4";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat3x4";arg="f_u32"] + expected: FAIL + + [:decl="mat3x4";arg="f_i32"] + expected: FAIL + + [:decl="mat3x4";arg="f_f32"] + expected: FAIL + + [:decl="mat3x4";arg="f_bool"] + expected: FAIL + + [:decl="mat3x4";arg="f_vec2"] + expected: FAIL + + [:decl="mat3x4";arg="f_vec3"] + expected: FAIL + + [:decl="mat3x4";arg="f_vec4"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat3x4";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat3x4";arg="f_array1"] + expected: FAIL + + [:decl="mat3x4";arg="f_array2"] + expected: FAIL + + [:decl="mat3x4";arg="f_array3"] + expected: FAIL + + [:decl="mat3x4";arg="f_array4"] + expected: FAIL + + [:decl="mat3x4";arg="f_array5"] + expected: FAIL + + [:decl="mat3x4";arg="f_constructible"] + expected: FAIL + + [:decl="mat3x4";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat3x4";arg="g_index_u32"] + expected: FAIL + + [:decl="mat3x4";arg="g_index_i32"] + expected: FAIL + + [:decl="mat3x4";arg="g_index_f32"] + expected: FAIL + + [:decl="mat3x4";arg="g_index_bool"] + expected: FAIL + + [:decl="mat3x4";arg="f_index_u32"] + expected: FAIL + + [:decl="mat3x4";arg="f_index_i32"] + expected: FAIL + + [:decl="mat3x4";arg="f_index_f32"] + expected: FAIL + + [:decl="mat3x4";arg="f_index_bool"] + expected: FAIL + + [:decl="mat3x4";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat3x4";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat3x4";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat3x4";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat3x4";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat3x4";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat3x4";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat3x4";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat3x4";arg="texture_sample"] + expected: FAIL + + [:decl="mat3x4";arg="texture_depth"] + expected: FAIL + + [:decl="mat3x4";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat3x4";arg="texture_storage"] + expected: FAIL + + [:decl="mat3x4";arg="texture_external"] + expected: FAIL + + [:decl="mat3x4";arg="sampler"] + expected: FAIL + + [:decl="mat3x4";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat3x4";arg="ptr1"] + expected: FAIL + + [:decl="mat3x4";arg="ptr2"] + expected: FAIL + + [:decl="mat3x4";arg="ptr3"] + expected: FAIL + + [:decl="mat3x4";arg="ptr4"] + expected: FAIL + + [:decl="mat3x4";arg="ptr5"] + expected: FAIL + + [:decl="mat3x4";arg="ptr6"] + expected: FAIL + + [:decl="mat3x4";arg="ptr7"] + expected: FAIL + + [:decl="mat3x4";arg="ptr8"] + expected: FAIL + + [:decl="mat3x4";arg="ptr9"] + expected: FAIL + + [:decl="mat3x4";arg="ptr10"] + expected: FAIL + + [:decl="mat3x4";arg="ptr11"] + expected: FAIL + + [:decl="mat3x4";arg="ptr12"] + expected: FAIL + + [:decl="mat4x2";arg="u32_literal"] + expected: FAIL + + [:decl="mat4x2";arg="i32_literal"] + expected: FAIL + + [:decl="mat4x2";arg="f32_literal"] + expected: FAIL + + [:decl="mat4x2";arg="bool_literal"] + expected: FAIL + + [:decl="mat4x2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat4x2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat4x2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat4x2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat4x2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat4x2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat4x2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat4x2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat4x2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="array1_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="array2_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="array3_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="array4_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="array5_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat4x2";arg="g_u32"] + expected: FAIL + + [:decl="mat4x2";arg="g_i32"] + expected: FAIL + + [:decl="mat4x2";arg="g_f32"] + expected: FAIL + + [:decl="mat4x2";arg="g_bool"] + expected: FAIL + + [:decl="mat4x2";arg="g_vec2"] + expected: FAIL + + [:decl="mat4x2";arg="g_vec3"] + expected: FAIL + + [:decl="mat4x2";arg="g_vec4"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat4x2";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat4x2";arg="g_array1"] + expected: FAIL + + [:decl="mat4x2";arg="g_array2"] + expected: FAIL + + [:decl="mat4x2";arg="g_array3"] + expected: FAIL + + [:decl="mat4x2";arg="g_array4"] + expected: FAIL + + [:decl="mat4x2";arg="g_array5"] + expected: FAIL + + [:decl="mat4x2";arg="g_constructible"] + expected: FAIL + + [:decl="mat4x2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat4x2";arg="f_u32"] + expected: FAIL + + [:decl="mat4x2";arg="f_i32"] + expected: FAIL + + [:decl="mat4x2";arg="f_f32"] + expected: FAIL + + [:decl="mat4x2";arg="f_bool"] + expected: FAIL + + [:decl="mat4x2";arg="f_vec2"] + expected: FAIL + + [:decl="mat4x2";arg="f_vec3"] + expected: FAIL + + [:decl="mat4x2";arg="f_vec4"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat4x2";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat4x2";arg="f_array1"] + expected: FAIL + + [:decl="mat4x2";arg="f_array2"] + expected: FAIL + + [:decl="mat4x2";arg="f_array3"] + expected: FAIL + + [:decl="mat4x2";arg="f_array4"] + expected: FAIL + + [:decl="mat4x2";arg="f_array5"] + expected: FAIL + + [:decl="mat4x2";arg="f_constructible"] + expected: FAIL + + [:decl="mat4x2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat4x2";arg="g_index_u32"] + expected: FAIL + + [:decl="mat4x2";arg="g_index_i32"] + expected: FAIL + + [:decl="mat4x2";arg="g_index_f32"] + expected: FAIL + + [:decl="mat4x2";arg="g_index_bool"] + expected: FAIL + + [:decl="mat4x2";arg="f_index_u32"] + expected: FAIL + + [:decl="mat4x2";arg="f_index_i32"] + expected: FAIL + + [:decl="mat4x2";arg="f_index_f32"] + expected: FAIL + + [:decl="mat4x2";arg="f_index_bool"] + expected: FAIL + + [:decl="mat4x2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat4x2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat4x2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat4x2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat4x2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat4x2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat4x2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat4x2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat4x2";arg="texture_sample"] + expected: FAIL + + [:decl="mat4x2";arg="texture_depth"] + expected: FAIL + + [:decl="mat4x2";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat4x2";arg="texture_storage"] + expected: FAIL + + [:decl="mat4x2";arg="texture_external"] + expected: FAIL + + [:decl="mat4x2";arg="sampler"] + expected: FAIL + + [:decl="mat4x2";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat4x2";arg="ptr1"] + expected: FAIL + + [:decl="mat4x2";arg="ptr2"] + expected: FAIL + + [:decl="mat4x2";arg="ptr3"] + expected: FAIL + + [:decl="mat4x2";arg="ptr4"] + expected: FAIL + + [:decl="mat4x2";arg="ptr5"] + expected: FAIL + + [:decl="mat4x2";arg="ptr6"] + expected: FAIL + + [:decl="mat4x2";arg="ptr7"] + expected: FAIL + + [:decl="mat4x2";arg="ptr8"] + expected: FAIL + + [:decl="mat4x2";arg="ptr9"] + expected: FAIL + + [:decl="mat4x2";arg="ptr10"] + expected: FAIL + + [:decl="mat4x2";arg="ptr11"] + expected: FAIL + + [:decl="mat4x2";arg="ptr12"] + expected: FAIL + + [:decl="mat4x3";arg="u32_literal"] + expected: FAIL + + [:decl="mat4x3";arg="i32_literal"] + expected: FAIL + + [:decl="mat4x3";arg="f32_literal"] + expected: FAIL + + [:decl="mat4x3";arg="bool_literal"] + expected: FAIL + + [:decl="mat4x3";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat4x3";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat4x3";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat4x3";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat4x3";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat4x3";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat4x3";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat4x3";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat4x3";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="array1_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="array2_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="array3_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="array4_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="array5_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat4x3";arg="g_u32"] + expected: FAIL + + [:decl="mat4x3";arg="g_i32"] + expected: FAIL + + [:decl="mat4x3";arg="g_f32"] + expected: FAIL + + [:decl="mat4x3";arg="g_bool"] + expected: FAIL + + [:decl="mat4x3";arg="g_vec2"] + expected: FAIL + + [:decl="mat4x3";arg="g_vec3"] + expected: FAIL + + [:decl="mat4x3";arg="g_vec4"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat4x3";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat4x3";arg="g_array1"] + expected: FAIL + + [:decl="mat4x3";arg="g_array2"] + expected: FAIL + + [:decl="mat4x3";arg="g_array3"] + expected: FAIL + + [:decl="mat4x3";arg="g_array4"] + expected: FAIL + + [:decl="mat4x3";arg="g_array5"] + expected: FAIL + + [:decl="mat4x3";arg="g_constructible"] + expected: FAIL + + [:decl="mat4x3";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat4x3";arg="f_u32"] + expected: FAIL + + [:decl="mat4x3";arg="f_i32"] + expected: FAIL + + [:decl="mat4x3";arg="f_f32"] + expected: FAIL + + [:decl="mat4x3";arg="f_bool"] + expected: FAIL + + [:decl="mat4x3";arg="f_vec2"] + expected: FAIL + + [:decl="mat4x3";arg="f_vec3"] + expected: FAIL + + [:decl="mat4x3";arg="f_vec4"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat4x3";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat4x3";arg="f_array1"] + expected: FAIL + + [:decl="mat4x3";arg="f_array2"] + expected: FAIL + + [:decl="mat4x3";arg="f_array3"] + expected: FAIL + + [:decl="mat4x3";arg="f_array4"] + expected: FAIL + + [:decl="mat4x3";arg="f_array5"] + expected: FAIL + + [:decl="mat4x3";arg="f_constructible"] + expected: FAIL + + [:decl="mat4x3";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat4x3";arg="g_index_u32"] + expected: FAIL + + [:decl="mat4x3";arg="g_index_i32"] + expected: FAIL + + [:decl="mat4x3";arg="g_index_f32"] + expected: FAIL + + [:decl="mat4x3";arg="g_index_bool"] + expected: FAIL + + [:decl="mat4x3";arg="f_index_u32"] + expected: FAIL + + [:decl="mat4x3";arg="f_index_i32"] + expected: FAIL + + [:decl="mat4x3";arg="f_index_f32"] + expected: FAIL + + [:decl="mat4x3";arg="f_index_bool"] + expected: FAIL + + [:decl="mat4x3";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat4x3";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat4x3";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat4x3";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat4x3";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat4x3";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat4x3";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat4x3";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat4x3";arg="texture_sample"] + expected: FAIL + + [:decl="mat4x3";arg="texture_depth"] + expected: FAIL + + [:decl="mat4x3";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat4x3";arg="texture_storage"] + expected: FAIL + + [:decl="mat4x3";arg="texture_external"] + expected: FAIL + + [:decl="mat4x3";arg="sampler"] + expected: FAIL + + [:decl="mat4x3";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat4x3";arg="ptr1"] + expected: FAIL + + [:decl="mat4x3";arg="ptr2"] + expected: FAIL + + [:decl="mat4x3";arg="ptr3"] + expected: FAIL + + [:decl="mat4x3";arg="ptr4"] + expected: FAIL + + [:decl="mat4x3";arg="ptr5"] + expected: FAIL + + [:decl="mat4x3";arg="ptr6"] + expected: FAIL + + [:decl="mat4x3";arg="ptr7"] + expected: FAIL + + [:decl="mat4x3";arg="ptr8"] + expected: FAIL + + [:decl="mat4x3";arg="ptr9"] + expected: FAIL + + [:decl="mat4x3";arg="ptr10"] + expected: FAIL + + [:decl="mat4x3";arg="ptr11"] + expected: FAIL + + [:decl="mat4x3";arg="ptr12"] + expected: FAIL + + [:decl="mat4x4";arg="u32_literal"] + expected: FAIL + + [:decl="mat4x4";arg="i32_literal"] + expected: FAIL + + [:decl="mat4x4";arg="f32_literal"] + expected: FAIL + + [:decl="mat4x4";arg="bool_literal"] + expected: FAIL + + [:decl="mat4x4";arg="abstract_int_literal"] + expected: FAIL + + [:decl="mat4x4";arg="abstract_float_literal"] + expected: FAIL + + [:decl="mat4x4";arg="vec2u_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec2i_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec2f_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec2b_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec3u_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec3i_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec3f_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec3b_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec4u_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec4i_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec4f_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec4b_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="mat4x4";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="mat4x4";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="mat4x4";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="mat4x4";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="mat4x4";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="mat4x4";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="array1_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="array2_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="array3_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="array4_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="array5_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="struct1_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="struct2_constructor"] + expected: FAIL + + [:decl="mat4x4";arg="g_u32"] + expected: FAIL + + [:decl="mat4x4";arg="g_i32"] + expected: FAIL + + [:decl="mat4x4";arg="g_f32"] + expected: FAIL + + [:decl="mat4x4";arg="g_bool"] + expected: FAIL + + [:decl="mat4x4";arg="g_vec2"] + expected: FAIL + + [:decl="mat4x4";arg="g_vec3"] + expected: FAIL + + [:decl="mat4x4";arg="g_vec4"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat2x2"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat2x3"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat2x4"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat3x2"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat3x3"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat3x4"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat4x2"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat4x3"] + expected: FAIL + + [:decl="mat4x4";arg="g_mat4x4"] + expected: FAIL + + [:decl="mat4x4";arg="g_array1"] + expected: FAIL + + [:decl="mat4x4";arg="g_array2"] + expected: FAIL + + [:decl="mat4x4";arg="g_array3"] + expected: FAIL + + [:decl="mat4x4";arg="g_array4"] + expected: FAIL + + [:decl="mat4x4";arg="g_array5"] + expected: FAIL + + [:decl="mat4x4";arg="g_constructible"] + expected: FAIL + + [:decl="mat4x4";arg="g_struct_with_array"] + expected: FAIL + + [:decl="mat4x4";arg="f_u32"] + expected: FAIL + + [:decl="mat4x4";arg="f_i32"] + expected: FAIL + + [:decl="mat4x4";arg="f_f32"] + expected: FAIL + + [:decl="mat4x4";arg="f_bool"] + expected: FAIL + + [:decl="mat4x4";arg="f_vec2"] + expected: FAIL + + [:decl="mat4x4";arg="f_vec3"] + expected: FAIL + + [:decl="mat4x4";arg="f_vec4"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat2x2"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat2x3"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat2x4"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat3x2"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat3x3"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat3x4"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat4x2"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat4x3"] + expected: FAIL + + [:decl="mat4x4";arg="f_mat4x4"] + expected: FAIL + + [:decl="mat4x4";arg="f_array1"] + expected: FAIL + + [:decl="mat4x4";arg="f_array2"] + expected: FAIL + + [:decl="mat4x4";arg="f_array3"] + expected: FAIL + + [:decl="mat4x4";arg="f_array4"] + expected: FAIL + + [:decl="mat4x4";arg="f_array5"] + expected: FAIL + + [:decl="mat4x4";arg="f_constructible"] + expected: FAIL + + [:decl="mat4x4";arg="f_struct_with_array"] + expected: FAIL + + [:decl="mat4x4";arg="g_index_u32"] + expected: FAIL + + [:decl="mat4x4";arg="g_index_i32"] + expected: FAIL + + [:decl="mat4x4";arg="g_index_f32"] + expected: FAIL + + [:decl="mat4x4";arg="g_index_bool"] + expected: FAIL + + [:decl="mat4x4";arg="f_index_u32"] + expected: FAIL + + [:decl="mat4x4";arg="f_index_i32"] + expected: FAIL + + [:decl="mat4x4";arg="f_index_f32"] + expected: FAIL + + [:decl="mat4x4";arg="f_index_bool"] + expected: FAIL + + [:decl="mat4x4";arg="g_array_index_u32"] + expected: FAIL + + [:decl="mat4x4";arg="g_array_index_i32"] + expected: FAIL + + [:decl="mat4x4";arg="g_array_index_f32"] + expected: FAIL + + [:decl="mat4x4";arg="g_array_index_bool"] + expected: FAIL + + [:decl="mat4x4";arg="f_array_index_u32"] + expected: FAIL + + [:decl="mat4x4";arg="f_array_index_i32"] + expected: FAIL + + [:decl="mat4x4";arg="f_array_index_f32"] + expected: FAIL + + [:decl="mat4x4";arg="f_array_index_bool"] + expected: FAIL + + [:decl="mat4x4";arg="texture_sample"] + expected: FAIL + + [:decl="mat4x4";arg="texture_depth"] + expected: FAIL + + [:decl="mat4x4";arg="texture_multisampled"] + expected: FAIL + + [:decl="mat4x4";arg="texture_storage"] + expected: FAIL + + [:decl="mat4x4";arg="texture_external"] + expected: FAIL + + [:decl="mat4x4";arg="sampler"] + expected: FAIL + + [:decl="mat4x4";arg="sampler_comparison"] + expected: FAIL + + [:decl="mat4x4";arg="ptr1"] + expected: FAIL + + [:decl="mat4x4";arg="ptr2"] + expected: FAIL + + [:decl="mat4x4";arg="ptr3"] + expected: FAIL + + [:decl="mat4x4";arg="ptr4"] + expected: FAIL + + [:decl="mat4x4";arg="ptr5"] + expected: FAIL + + [:decl="mat4x4";arg="ptr6"] + expected: FAIL + + [:decl="mat4x4";arg="ptr7"] + expected: FAIL + + [:decl="mat4x4";arg="ptr8"] + expected: FAIL + + [:decl="mat4x4";arg="ptr9"] + expected: FAIL + + [:decl="mat4x4";arg="ptr10"] + expected: FAIL + + [:decl="mat4x4";arg="ptr11"] + expected: FAIL + + [:decl="mat4x4";arg="ptr12"] + expected: FAIL + + [:decl="array1";arg="u32_literal"] + expected: FAIL + + [:decl="array1";arg="i32_literal"] + expected: FAIL + + [:decl="array1";arg="f32_literal"] + expected: FAIL + + [:decl="array1";arg="bool_literal"] + expected: FAIL + + [:decl="array1";arg="abstract_int_literal"] + expected: FAIL + + [:decl="array1";arg="abstract_float_literal"] + expected: FAIL + + [:decl="array1";arg="vec2u_constructor"] + expected: FAIL + + [:decl="array1";arg="vec2i_constructor"] + expected: FAIL + + [:decl="array1";arg="vec2f_constructor"] + expected: FAIL + + [:decl="array1";arg="vec2b_constructor"] + expected: FAIL + + [:decl="array1";arg="vec3u_constructor"] + expected: FAIL + + [:decl="array1";arg="vec3i_constructor"] + expected: FAIL + + [:decl="array1";arg="vec3f_constructor"] + expected: FAIL + + [:decl="array1";arg="vec3b_constructor"] + expected: FAIL + + [:decl="array1";arg="vec4u_constructor"] + expected: FAIL + + [:decl="array1";arg="vec4i_constructor"] + expected: FAIL + + [:decl="array1";arg="vec4f_constructor"] + expected: FAIL + + [:decl="array1";arg="vec4b_constructor"] + expected: FAIL + + [:decl="array1";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="array1";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="array1";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="array1";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="array1";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="array1";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="array1";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="array1";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="array1";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="array1";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="array1";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="array1";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="array1";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="array1";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="array1";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="array1";arg="array1_constructor"] + expected: FAIL + + [:decl="array1";arg="array2_constructor"] + expected: FAIL + + [:decl="array1";arg="array3_constructor"] + expected: FAIL + + [:decl="array1";arg="array4_constructor"] + expected: FAIL + + [:decl="array1";arg="array5_constructor"] + expected: FAIL + + [:decl="array1";arg="struct1_constructor"] + expected: FAIL + + [:decl="array1";arg="struct2_constructor"] + expected: FAIL + + [:decl="array1";arg="g_u32"] + expected: FAIL + + [:decl="array1";arg="g_i32"] + expected: FAIL + + [:decl="array1";arg="g_f32"] + expected: FAIL + + [:decl="array1";arg="g_bool"] + expected: FAIL + + [:decl="array1";arg="g_vec2"] + expected: FAIL + + [:decl="array1";arg="g_vec3"] + expected: FAIL + + [:decl="array1";arg="g_vec4"] + expected: FAIL + + [:decl="array1";arg="g_mat2x2"] + expected: FAIL + + [:decl="array1";arg="g_mat2x3"] + expected: FAIL + + [:decl="array1";arg="g_mat2x4"] + expected: FAIL + + [:decl="array1";arg="g_mat3x2"] + expected: FAIL + + [:decl="array1";arg="g_mat3x3"] + expected: FAIL + + [:decl="array1";arg="g_mat3x4"] + expected: FAIL + + [:decl="array1";arg="g_mat4x2"] + expected: FAIL + + [:decl="array1";arg="g_mat4x3"] + expected: FAIL + + [:decl="array1";arg="g_mat4x4"] + expected: FAIL + + [:decl="array1";arg="g_array1"] + expected: FAIL + + [:decl="array1";arg="g_array2"] + expected: FAIL + + [:decl="array1";arg="g_array3"] + expected: FAIL + + [:decl="array1";arg="g_array4"] + expected: FAIL + + [:decl="array1";arg="g_array5"] + expected: FAIL + + [:decl="array1";arg="g_constructible"] + expected: FAIL + + [:decl="array1";arg="g_struct_with_array"] + expected: FAIL + + [:decl="array1";arg="f_u32"] + expected: FAIL + + [:decl="array1";arg="f_i32"] + expected: FAIL + + [:decl="array1";arg="f_f32"] + expected: FAIL + + [:decl="array1";arg="f_bool"] + expected: FAIL + + [:decl="array1";arg="f_vec2"] + expected: FAIL + + [:decl="array1";arg="f_vec3"] + expected: FAIL + + [:decl="array1";arg="f_vec4"] + expected: FAIL + + [:decl="array1";arg="f_mat2x2"] + expected: FAIL + + [:decl="array1";arg="f_mat2x3"] + expected: FAIL + + [:decl="array1";arg="f_mat2x4"] + expected: FAIL + + [:decl="array1";arg="f_mat3x2"] + expected: FAIL + + [:decl="array1";arg="f_mat3x3"] + expected: FAIL + + [:decl="array1";arg="f_mat3x4"] + expected: FAIL + + [:decl="array1";arg="f_mat4x2"] + expected: FAIL + + [:decl="array1";arg="f_mat4x3"] + expected: FAIL + + [:decl="array1";arg="f_mat4x4"] + expected: FAIL + + [:decl="array1";arg="f_array1"] + expected: FAIL + + [:decl="array1";arg="f_array2"] + expected: FAIL + + [:decl="array1";arg="f_array3"] + expected: FAIL + + [:decl="array1";arg="f_array4"] + expected: FAIL + + [:decl="array1";arg="f_array5"] + expected: FAIL + + [:decl="array1";arg="f_constructible"] + expected: FAIL + + [:decl="array1";arg="f_struct_with_array"] + expected: FAIL + + [:decl="array1";arg="g_index_u32"] + expected: FAIL + + [:decl="array1";arg="g_index_i32"] + expected: FAIL + + [:decl="array1";arg="g_index_f32"] + expected: FAIL + + [:decl="array1";arg="g_index_bool"] + expected: FAIL + + [:decl="array1";arg="f_index_u32"] + expected: FAIL + + [:decl="array1";arg="f_index_i32"] + expected: FAIL + + [:decl="array1";arg="f_index_f32"] + expected: FAIL + + [:decl="array1";arg="f_index_bool"] + expected: FAIL + + [:decl="array1";arg="g_array_index_u32"] + expected: FAIL + + [:decl="array1";arg="g_array_index_i32"] + expected: FAIL + + [:decl="array1";arg="g_array_index_f32"] + expected: FAIL + + [:decl="array1";arg="g_array_index_bool"] + expected: FAIL + + [:decl="array1";arg="f_array_index_u32"] + expected: FAIL + + [:decl="array1";arg="f_array_index_i32"] + expected: FAIL + + [:decl="array1";arg="f_array_index_f32"] + expected: FAIL + + [:decl="array1";arg="f_array_index_bool"] + expected: FAIL + + [:decl="array1";arg="texture_sample"] + expected: FAIL + + [:decl="array1";arg="texture_depth"] + expected: FAIL + + [:decl="array1";arg="texture_multisampled"] + expected: FAIL + + [:decl="array1";arg="texture_storage"] + expected: FAIL + + [:decl="array1";arg="texture_external"] + expected: FAIL + + [:decl="array1";arg="sampler"] + expected: FAIL + + [:decl="array1";arg="sampler_comparison"] + expected: FAIL + + [:decl="array1";arg="ptr1"] + expected: FAIL + + [:decl="array1";arg="ptr2"] + expected: FAIL + + [:decl="array1";arg="ptr3"] + expected: FAIL + + [:decl="array1";arg="ptr4"] + expected: FAIL + + [:decl="array1";arg="ptr5"] + expected: FAIL + + [:decl="array1";arg="ptr6"] + expected: FAIL + + [:decl="array1";arg="ptr7"] + expected: FAIL + + [:decl="array1";arg="ptr8"] + expected: FAIL + + [:decl="array1";arg="ptr9"] + expected: FAIL + + [:decl="array1";arg="ptr10"] + expected: FAIL + + [:decl="array1";arg="ptr11"] + expected: FAIL + + [:decl="array1";arg="ptr12"] + expected: FAIL + + [:decl="array2";arg="u32_literal"] + expected: FAIL + + [:decl="array2";arg="i32_literal"] + expected: FAIL + + [:decl="array2";arg="f32_literal"] + expected: FAIL + + [:decl="array2";arg="bool_literal"] + expected: FAIL + + [:decl="array2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="array2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="array2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="array2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="array2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="array2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="array2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="array2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="array2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="array2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="array2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="array2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="array2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="array2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="array2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="array2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="array2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="array2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="array2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="array2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="array2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="array2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="array2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="array2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="array2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="array2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="array2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="array2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="array2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="array2";arg="array1_constructor"] + expected: FAIL + + [:decl="array2";arg="array2_constructor"] + expected: FAIL + + [:decl="array2";arg="array3_constructor"] + expected: FAIL + + [:decl="array2";arg="array4_constructor"] + expected: FAIL + + [:decl="array2";arg="array5_constructor"] + expected: FAIL + + [:decl="array2";arg="struct1_constructor"] + expected: FAIL + + [:decl="array2";arg="struct2_constructor"] + expected: FAIL + + [:decl="array2";arg="g_u32"] + expected: FAIL + + [:decl="array2";arg="g_i32"] + expected: FAIL + + [:decl="array2";arg="g_f32"] + expected: FAIL + + [:decl="array2";arg="g_bool"] + expected: FAIL + + [:decl="array2";arg="g_vec2"] + expected: FAIL + + [:decl="array2";arg="g_vec3"] + expected: FAIL + + [:decl="array2";arg="g_vec4"] + expected: FAIL + + [:decl="array2";arg="g_mat2x2"] + expected: FAIL + + [:decl="array2";arg="g_mat2x3"] + expected: FAIL + + [:decl="array2";arg="g_mat2x4"] + expected: FAIL + + [:decl="array2";arg="g_mat3x2"] + expected: FAIL + + [:decl="array2";arg="g_mat3x3"] + expected: FAIL + + [:decl="array2";arg="g_mat3x4"] + expected: FAIL + + [:decl="array2";arg="g_mat4x2"] + expected: FAIL + + [:decl="array2";arg="g_mat4x3"] + expected: FAIL + + [:decl="array2";arg="g_mat4x4"] + expected: FAIL + + [:decl="array2";arg="g_array1"] + expected: FAIL + + [:decl="array2";arg="g_array2"] + expected: FAIL + + [:decl="array2";arg="g_array3"] + expected: FAIL + + [:decl="array2";arg="g_array4"] + expected: FAIL + + [:decl="array2";arg="g_array5"] + expected: FAIL + + [:decl="array2";arg="g_constructible"] + expected: FAIL + + [:decl="array2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="array2";arg="f_u32"] + expected: FAIL + + [:decl="array2";arg="f_i32"] + expected: FAIL + + [:decl="array2";arg="f_f32"] + expected: FAIL + + [:decl="array2";arg="f_bool"] + expected: FAIL + + [:decl="array2";arg="f_vec2"] + expected: FAIL + + [:decl="array2";arg="f_vec3"] + expected: FAIL + + [:decl="array2";arg="f_vec4"] + expected: FAIL + + [:decl="array2";arg="f_mat2x2"] + expected: FAIL + + [:decl="array2";arg="f_mat2x3"] + expected: FAIL + + [:decl="array2";arg="f_mat2x4"] + expected: FAIL + + [:decl="array2";arg="f_mat3x2"] + expected: FAIL + + [:decl="array2";arg="f_mat3x3"] + expected: FAIL + + [:decl="array2";arg="f_mat3x4"] + expected: FAIL + + [:decl="array2";arg="f_mat4x2"] + expected: FAIL + + [:decl="array2";arg="f_mat4x3"] + expected: FAIL + + [:decl="array2";arg="f_mat4x4"] + expected: FAIL + + [:decl="array2";arg="f_array1"] + expected: FAIL + + [:decl="array2";arg="f_array2"] + expected: FAIL + + [:decl="array2";arg="f_array3"] + expected: FAIL + + [:decl="array2";arg="f_array4"] + expected: FAIL + + [:decl="array2";arg="f_array5"] + expected: FAIL + + [:decl="array2";arg="f_constructible"] + expected: FAIL + + [:decl="array2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="array2";arg="g_index_u32"] + expected: FAIL + + [:decl="array2";arg="g_index_i32"] + expected: FAIL + + [:decl="array2";arg="g_index_f32"] + expected: FAIL + + [:decl="array2";arg="g_index_bool"] + expected: FAIL + + [:decl="array2";arg="f_index_u32"] + expected: FAIL + + [:decl="array2";arg="f_index_i32"] + expected: FAIL + + [:decl="array2";arg="f_index_f32"] + expected: FAIL + + [:decl="array2";arg="f_index_bool"] + expected: FAIL + + [:decl="array2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="array2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="array2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="array2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="array2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="array2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="array2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="array2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="array2";arg="texture_sample"] + expected: FAIL + + [:decl="array2";arg="texture_depth"] + expected: FAIL + + [:decl="array2";arg="texture_multisampled"] + expected: FAIL + + [:decl="array2";arg="texture_storage"] + expected: FAIL + + [:decl="array2";arg="texture_external"] + expected: FAIL + + [:decl="array2";arg="sampler"] + expected: FAIL + + [:decl="array2";arg="sampler_comparison"] + expected: FAIL + + [:decl="array2";arg="ptr1"] + expected: FAIL + + [:decl="array2";arg="ptr2"] + expected: FAIL + + [:decl="array2";arg="ptr3"] + expected: FAIL + + [:decl="array2";arg="ptr4"] + expected: FAIL + + [:decl="array2";arg="ptr5"] + expected: FAIL + + [:decl="array2";arg="ptr6"] + expected: FAIL + + [:decl="array2";arg="ptr7"] + expected: FAIL + + [:decl="array2";arg="ptr8"] + expected: FAIL + + [:decl="array2";arg="ptr9"] + expected: FAIL + + [:decl="array2";arg="ptr10"] + expected: FAIL + + [:decl="array2";arg="ptr11"] + expected: FAIL + + [:decl="array2";arg="ptr12"] + expected: FAIL + + [:decl="array3";arg="u32_literal"] + expected: FAIL + + [:decl="array3";arg="i32_literal"] + expected: FAIL + + [:decl="array3";arg="f32_literal"] + expected: FAIL + + [:decl="array3";arg="bool_literal"] + expected: FAIL + + [:decl="array3";arg="abstract_int_literal"] + expected: FAIL + + [:decl="array3";arg="abstract_float_literal"] + expected: FAIL + + [:decl="array3";arg="vec2u_constructor"] + expected: FAIL + + [:decl="array3";arg="vec2i_constructor"] + expected: FAIL + + [:decl="array3";arg="vec2f_constructor"] + expected: FAIL + + [:decl="array3";arg="vec2b_constructor"] + expected: FAIL + + [:decl="array3";arg="vec3u_constructor"] + expected: FAIL + + [:decl="array3";arg="vec3i_constructor"] + expected: FAIL + + [:decl="array3";arg="vec3f_constructor"] + expected: FAIL + + [:decl="array3";arg="vec3b_constructor"] + expected: FAIL + + [:decl="array3";arg="vec4u_constructor"] + expected: FAIL + + [:decl="array3";arg="vec4i_constructor"] + expected: FAIL + + [:decl="array3";arg="vec4f_constructor"] + expected: FAIL + + [:decl="array3";arg="vec4b_constructor"] + expected: FAIL + + [:decl="array3";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="array3";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="array3";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="array3";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="array3";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="array3";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="array3";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="array3";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="array3";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="array3";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="array3";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="array3";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="array3";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="array3";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="array3";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="array3";arg="array1_constructor"] + expected: FAIL + + [:decl="array3";arg="array2_constructor"] + expected: FAIL + + [:decl="array3";arg="array3_constructor"] + expected: FAIL + + [:decl="array3";arg="array4_constructor"] + expected: FAIL + + [:decl="array3";arg="array5_constructor"] + expected: FAIL + + [:decl="array3";arg="struct1_constructor"] + expected: FAIL + + [:decl="array3";arg="struct2_constructor"] + expected: FAIL + + [:decl="array3";arg="g_u32"] + expected: FAIL + + [:decl="array3";arg="g_i32"] + expected: FAIL + + [:decl="array3";arg="g_f32"] + expected: FAIL + + [:decl="array3";arg="g_bool"] + expected: FAIL + + [:decl="array3";arg="g_vec2"] + expected: FAIL + + [:decl="array3";arg="g_vec3"] + expected: FAIL + + [:decl="array3";arg="g_vec4"] + expected: FAIL + + [:decl="array3";arg="g_mat2x2"] + expected: FAIL + + [:decl="array3";arg="g_mat2x3"] + expected: FAIL + + [:decl="array3";arg="g_mat2x4"] + expected: FAIL + + [:decl="array3";arg="g_mat3x2"] + expected: FAIL + + [:decl="array3";arg="g_mat3x3"] + expected: FAIL + + [:decl="array3";arg="g_mat3x4"] + expected: FAIL + + [:decl="array3";arg="g_mat4x2"] + expected: FAIL + + [:decl="array3";arg="g_mat4x3"] + expected: FAIL + + [:decl="array3";arg="g_mat4x4"] + expected: FAIL + + [:decl="array3";arg="g_array1"] + expected: FAIL + + [:decl="array3";arg="g_array2"] + expected: FAIL + + [:decl="array3";arg="g_array3"] + expected: FAIL + + [:decl="array3";arg="g_array4"] + expected: FAIL + + [:decl="array3";arg="g_array5"] + expected: FAIL + + [:decl="array3";arg="g_constructible"] + expected: FAIL + + [:decl="array3";arg="g_struct_with_array"] + expected: FAIL + + [:decl="array3";arg="f_u32"] + expected: FAIL + + [:decl="array3";arg="f_i32"] + expected: FAIL + + [:decl="array3";arg="f_f32"] + expected: FAIL + + [:decl="array3";arg="f_bool"] + expected: FAIL + + [:decl="array3";arg="f_vec2"] + expected: FAIL + + [:decl="array3";arg="f_vec3"] + expected: FAIL + + [:decl="array3";arg="f_vec4"] + expected: FAIL + + [:decl="array3";arg="f_mat2x2"] + expected: FAIL + + [:decl="array3";arg="f_mat2x3"] + expected: FAIL + + [:decl="array3";arg="f_mat2x4"] + expected: FAIL + + [:decl="array3";arg="f_mat3x2"] + expected: FAIL + + [:decl="array3";arg="f_mat3x3"] + expected: FAIL + + [:decl="array3";arg="f_mat3x4"] + expected: FAIL + + [:decl="array3";arg="f_mat4x2"] + expected: FAIL + + [:decl="array3";arg="f_mat4x3"] + expected: FAIL + + [:decl="array3";arg="f_mat4x4"] + expected: FAIL + + [:decl="array3";arg="f_array1"] + expected: FAIL + + [:decl="array3";arg="f_array2"] + expected: FAIL + + [:decl="array3";arg="f_array3"] + expected: FAIL + + [:decl="array3";arg="f_array4"] + expected: FAIL + + [:decl="array3";arg="f_array5"] + expected: FAIL + + [:decl="array3";arg="f_constructible"] + expected: FAIL + + [:decl="array3";arg="f_struct_with_array"] + expected: FAIL + + [:decl="array3";arg="g_index_u32"] + expected: FAIL + + [:decl="array3";arg="g_index_i32"] + expected: FAIL + + [:decl="array3";arg="g_index_f32"] + expected: FAIL + + [:decl="array3";arg="g_index_bool"] + expected: FAIL + + [:decl="array3";arg="f_index_u32"] + expected: FAIL + + [:decl="array3";arg="f_index_i32"] + expected: FAIL + + [:decl="array3";arg="f_index_f32"] + expected: FAIL + + [:decl="array3";arg="f_index_bool"] + expected: FAIL + + [:decl="array3";arg="g_array_index_u32"] + expected: FAIL + + [:decl="array3";arg="g_array_index_i32"] + expected: FAIL + + [:decl="array3";arg="g_array_index_f32"] + expected: FAIL + + [:decl="array3";arg="g_array_index_bool"] + expected: FAIL + + [:decl="array3";arg="f_array_index_u32"] + expected: FAIL + + [:decl="array3";arg="f_array_index_i32"] + expected: FAIL + + [:decl="array3";arg="f_array_index_f32"] + expected: FAIL + + [:decl="array3";arg="f_array_index_bool"] + expected: FAIL + + [:decl="array3";arg="texture_sample"] + expected: FAIL + + [:decl="array3";arg="texture_depth"] + expected: FAIL + + [:decl="array3";arg="texture_multisampled"] + expected: FAIL + + [:decl="array3";arg="texture_storage"] + expected: FAIL + + [:decl="array3";arg="texture_external"] + expected: FAIL + + [:decl="array3";arg="sampler"] + expected: FAIL + + [:decl="array3";arg="sampler_comparison"] + expected: FAIL + + [:decl="array3";arg="ptr1"] + expected: FAIL + + [:decl="array3";arg="ptr2"] + expected: FAIL + + [:decl="array3";arg="ptr3"] + expected: FAIL + + [:decl="array3";arg="ptr4"] + expected: FAIL + + [:decl="array3";arg="ptr5"] + expected: FAIL + + [:decl="array3";arg="ptr6"] + expected: FAIL + + [:decl="array3";arg="ptr7"] + expected: FAIL + + [:decl="array3";arg="ptr8"] + expected: FAIL + + [:decl="array3";arg="ptr9"] + expected: FAIL + + [:decl="array3";arg="ptr10"] + expected: FAIL + + [:decl="array3";arg="ptr11"] + expected: FAIL + + [:decl="array3";arg="ptr12"] + expected: FAIL + + [:decl="array4";arg="u32_literal"] + expected: FAIL + + [:decl="array4";arg="i32_literal"] + expected: FAIL + + [:decl="array4";arg="f32_literal"] + expected: FAIL + + [:decl="array4";arg="bool_literal"] + expected: FAIL + + [:decl="array4";arg="abstract_int_literal"] + expected: FAIL + + [:decl="array4";arg="abstract_float_literal"] + expected: FAIL + + [:decl="array4";arg="vec2u_constructor"] + expected: FAIL + + [:decl="array4";arg="vec2i_constructor"] + expected: FAIL + + [:decl="array4";arg="vec2f_constructor"] + expected: FAIL + + [:decl="array4";arg="vec2b_constructor"] + expected: FAIL + + [:decl="array4";arg="vec3u_constructor"] + expected: FAIL + + [:decl="array4";arg="vec3i_constructor"] + expected: FAIL + + [:decl="array4";arg="vec3f_constructor"] + expected: FAIL + + [:decl="array4";arg="vec3b_constructor"] + expected: FAIL + + [:decl="array4";arg="vec4u_constructor"] + expected: FAIL + + [:decl="array4";arg="vec4i_constructor"] + expected: FAIL + + [:decl="array4";arg="vec4f_constructor"] + expected: FAIL + + [:decl="array4";arg="vec4b_constructor"] + expected: FAIL + + [:decl="array4";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="array4";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="array4";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="array4";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="array4";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="array4";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="array4";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="array4";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="array4";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="array4";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="array4";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="array4";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="array4";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="array4";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="array4";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="array4";arg="array1_constructor"] + expected: FAIL + + [:decl="array4";arg="array2_constructor"] + expected: FAIL + + [:decl="array4";arg="array3_constructor"] + expected: FAIL + + [:decl="array4";arg="array4_constructor"] + expected: FAIL + + [:decl="array4";arg="array5_constructor"] + expected: FAIL + + [:decl="array4";arg="struct1_constructor"] + expected: FAIL + + [:decl="array4";arg="struct2_constructor"] + expected: FAIL + + [:decl="array4";arg="g_u32"] + expected: FAIL + + [:decl="array4";arg="g_i32"] + expected: FAIL + + [:decl="array4";arg="g_f32"] + expected: FAIL + + [:decl="array4";arg="g_bool"] + expected: FAIL + + [:decl="array4";arg="g_vec2"] + expected: FAIL + + [:decl="array4";arg="g_vec3"] + expected: FAIL + + [:decl="array4";arg="g_vec4"] + expected: FAIL + + [:decl="array4";arg="g_mat2x2"] + expected: FAIL + + [:decl="array4";arg="g_mat2x3"] + expected: FAIL + + [:decl="array4";arg="g_mat2x4"] + expected: FAIL + + [:decl="array4";arg="g_mat3x2"] + expected: FAIL + + [:decl="array4";arg="g_mat3x3"] + expected: FAIL + + [:decl="array4";arg="g_mat3x4"] + expected: FAIL + + [:decl="array4";arg="g_mat4x2"] + expected: FAIL + + [:decl="array4";arg="g_mat4x3"] + expected: FAIL + + [:decl="array4";arg="g_mat4x4"] + expected: FAIL + + [:decl="array4";arg="g_array1"] + expected: FAIL + + [:decl="array4";arg="g_array2"] + expected: FAIL + + [:decl="array4";arg="g_array3"] + expected: FAIL + + [:decl="array4";arg="g_array4"] + expected: FAIL + + [:decl="array4";arg="g_array5"] + expected: FAIL + + [:decl="array4";arg="g_constructible"] + expected: FAIL + + [:decl="array4";arg="g_struct_with_array"] + expected: FAIL + + [:decl="array4";arg="f_u32"] + expected: FAIL + + [:decl="array4";arg="f_i32"] + expected: FAIL + + [:decl="array4";arg="f_f32"] + expected: FAIL + + [:decl="array4";arg="f_bool"] + expected: FAIL + + [:decl="array4";arg="f_vec2"] + expected: FAIL + + [:decl="array4";arg="f_vec3"] + expected: FAIL + + [:decl="array4";arg="f_vec4"] + expected: FAIL + + [:decl="array4";arg="f_mat2x2"] + expected: FAIL + + [:decl="array4";arg="f_mat2x3"] + expected: FAIL + + [:decl="array4";arg="f_mat2x4"] + expected: FAIL + + [:decl="array4";arg="f_mat3x2"] + expected: FAIL + + [:decl="array4";arg="f_mat3x3"] + expected: FAIL + + [:decl="array4";arg="f_mat3x4"] + expected: FAIL + + [:decl="array4";arg="f_mat4x2"] + expected: FAIL + + [:decl="array4";arg="f_mat4x3"] + expected: FAIL + + [:decl="array4";arg="f_mat4x4"] + expected: FAIL + + [:decl="array4";arg="f_array1"] + expected: FAIL + + [:decl="array4";arg="f_array2"] + expected: FAIL + + [:decl="array4";arg="f_array3"] + expected: FAIL + + [:decl="array4";arg="f_array4"] + expected: FAIL + + [:decl="array4";arg="f_array5"] + expected: FAIL + + [:decl="array4";arg="f_constructible"] + expected: FAIL + + [:decl="array4";arg="f_struct_with_array"] + expected: FAIL + + [:decl="array4";arg="g_index_u32"] + expected: FAIL + + [:decl="array4";arg="g_index_i32"] + expected: FAIL + + [:decl="array4";arg="g_index_f32"] + expected: FAIL + + [:decl="array4";arg="g_index_bool"] + expected: FAIL + + [:decl="array4";arg="f_index_u32"] + expected: FAIL + + [:decl="array4";arg="f_index_i32"] + expected: FAIL + + [:decl="array4";arg="f_index_f32"] + expected: FAIL + + [:decl="array4";arg="f_index_bool"] + expected: FAIL + + [:decl="array4";arg="g_array_index_u32"] + expected: FAIL + + [:decl="array4";arg="g_array_index_i32"] + expected: FAIL + + [:decl="array4";arg="g_array_index_f32"] + expected: FAIL + + [:decl="array4";arg="g_array_index_bool"] + expected: FAIL + + [:decl="array4";arg="f_array_index_u32"] + expected: FAIL + + [:decl="array4";arg="f_array_index_i32"] + expected: FAIL + + [:decl="array4";arg="f_array_index_f32"] + expected: FAIL + + [:decl="array4";arg="f_array_index_bool"] + expected: FAIL + + [:decl="array4";arg="texture_sample"] + expected: FAIL + + [:decl="array4";arg="texture_depth"] + expected: FAIL + + [:decl="array4";arg="texture_multisampled"] + expected: FAIL + + [:decl="array4";arg="texture_storage"] + expected: FAIL + + [:decl="array4";arg="texture_external"] + expected: FAIL + + [:decl="array4";arg="sampler"] + expected: FAIL + + [:decl="array4";arg="sampler_comparison"] + expected: FAIL + + [:decl="array4";arg="ptr1"] + expected: FAIL + + [:decl="array4";arg="ptr2"] + expected: FAIL + + [:decl="array4";arg="ptr3"] + expected: FAIL + + [:decl="array4";arg="ptr4"] + expected: FAIL + + [:decl="array4";arg="ptr5"] + expected: FAIL + + [:decl="array4";arg="ptr6"] + expected: FAIL + + [:decl="array4";arg="ptr7"] + expected: FAIL + + [:decl="array4";arg="ptr8"] + expected: FAIL + + [:decl="array4";arg="ptr9"] + expected: FAIL + + [:decl="array4";arg="ptr10"] + expected: FAIL + + [:decl="array4";arg="ptr11"] + expected: FAIL + + [:decl="array4";arg="ptr12"] + expected: FAIL + + [:decl="array5";arg="u32_literal"] + expected: FAIL + + [:decl="array5";arg="i32_literal"] + expected: FAIL + + [:decl="array5";arg="f32_literal"] + expected: FAIL + + [:decl="array5";arg="bool_literal"] + expected: FAIL + + [:decl="array5";arg="abstract_int_literal"] + expected: FAIL + + [:decl="array5";arg="abstract_float_literal"] + expected: FAIL + + [:decl="array5";arg="vec2u_constructor"] + expected: FAIL + + [:decl="array5";arg="vec2i_constructor"] + expected: FAIL + + [:decl="array5";arg="vec2f_constructor"] + expected: FAIL + + [:decl="array5";arg="vec2b_constructor"] + expected: FAIL + + [:decl="array5";arg="vec3u_constructor"] + expected: FAIL + + [:decl="array5";arg="vec3i_constructor"] + expected: FAIL + + [:decl="array5";arg="vec3f_constructor"] + expected: FAIL + + [:decl="array5";arg="vec3b_constructor"] + expected: FAIL + + [:decl="array5";arg="vec4u_constructor"] + expected: FAIL + + [:decl="array5";arg="vec4i_constructor"] + expected: FAIL + + [:decl="array5";arg="vec4f_constructor"] + expected: FAIL + + [:decl="array5";arg="vec4b_constructor"] + expected: FAIL + + [:decl="array5";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="array5";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="array5";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="array5";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="array5";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="array5";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="array5";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="array5";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="array5";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="array5";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="array5";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="array5";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="array5";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="array5";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="array5";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="array5";arg="array1_constructor"] + expected: FAIL + + [:decl="array5";arg="array2_constructor"] + expected: FAIL + + [:decl="array5";arg="array3_constructor"] + expected: FAIL + + [:decl="array5";arg="array4_constructor"] + expected: FAIL + + [:decl="array5";arg="array5_constructor"] + expected: FAIL + + [:decl="array5";arg="struct1_constructor"] + expected: FAIL + + [:decl="array5";arg="struct2_constructor"] + expected: FAIL + + [:decl="array5";arg="g_u32"] + expected: FAIL + + [:decl="array5";arg="g_i32"] + expected: FAIL + + [:decl="array5";arg="g_f32"] + expected: FAIL + + [:decl="array5";arg="g_bool"] + expected: FAIL + + [:decl="array5";arg="g_vec2"] + expected: FAIL + + [:decl="array5";arg="g_vec3"] + expected: FAIL + + [:decl="array5";arg="g_vec4"] + expected: FAIL + + [:decl="array5";arg="g_mat2x2"] + expected: FAIL + + [:decl="array5";arg="g_mat2x3"] + expected: FAIL + + [:decl="array5";arg="g_mat2x4"] + expected: FAIL + + [:decl="array5";arg="g_mat3x2"] + expected: FAIL + + [:decl="array5";arg="g_mat3x3"] + expected: FAIL + + [:decl="array5";arg="g_mat3x4"] + expected: FAIL + + [:decl="array5";arg="g_mat4x2"] + expected: FAIL + + [:decl="array5";arg="g_mat4x3"] + expected: FAIL + + [:decl="array5";arg="g_mat4x4"] + expected: FAIL + + [:decl="array5";arg="g_array1"] + expected: FAIL + + [:decl="array5";arg="g_array2"] + expected: FAIL + + [:decl="array5";arg="g_array3"] + expected: FAIL + + [:decl="array5";arg="g_array4"] + expected: FAIL + + [:decl="array5";arg="g_array5"] + expected: FAIL + + [:decl="array5";arg="g_constructible"] + expected: FAIL + + [:decl="array5";arg="g_struct_with_array"] + expected: FAIL + + [:decl="array5";arg="f_u32"] + expected: FAIL + + [:decl="array5";arg="f_i32"] + expected: FAIL + + [:decl="array5";arg="f_f32"] + expected: FAIL + + [:decl="array5";arg="f_bool"] + expected: FAIL + + [:decl="array5";arg="f_vec2"] + expected: FAIL + + [:decl="array5";arg="f_vec3"] + expected: FAIL + + [:decl="array5";arg="f_vec4"] + expected: FAIL + + [:decl="array5";arg="f_mat2x2"] + expected: FAIL + + [:decl="array5";arg="f_mat2x3"] + expected: FAIL + + [:decl="array5";arg="f_mat2x4"] + expected: FAIL + + [:decl="array5";arg="f_mat3x2"] + expected: FAIL + + [:decl="array5";arg="f_mat3x3"] + expected: FAIL + + [:decl="array5";arg="f_mat3x4"] + expected: FAIL + + [:decl="array5";arg="f_mat4x2"] + expected: FAIL + + [:decl="array5";arg="f_mat4x3"] + expected: FAIL + + [:decl="array5";arg="f_mat4x4"] + expected: FAIL + + [:decl="array5";arg="f_array1"] + expected: FAIL + + [:decl="array5";arg="f_array2"] + expected: FAIL + + [:decl="array5";arg="f_array3"] + expected: FAIL + + [:decl="array5";arg="f_array4"] + expected: FAIL + + [:decl="array5";arg="f_array5"] + expected: FAIL + + [:decl="array5";arg="f_constructible"] + expected: FAIL + + [:decl="array5";arg="f_struct_with_array"] + expected: FAIL + + [:decl="array5";arg="g_index_u32"] + expected: FAIL + + [:decl="array5";arg="g_index_i32"] + expected: FAIL + + [:decl="array5";arg="g_index_f32"] + expected: FAIL + + [:decl="array5";arg="g_index_bool"] + expected: FAIL + + [:decl="array5";arg="f_index_u32"] + expected: FAIL + + [:decl="array5";arg="f_index_i32"] + expected: FAIL + + [:decl="array5";arg="f_index_f32"] + expected: FAIL + + [:decl="array5";arg="f_index_bool"] + expected: FAIL + + [:decl="array5";arg="g_array_index_u32"] + expected: FAIL + + [:decl="array5";arg="g_array_index_i32"] + expected: FAIL + + [:decl="array5";arg="g_array_index_f32"] + expected: FAIL + + [:decl="array5";arg="g_array_index_bool"] + expected: FAIL + + [:decl="array5";arg="f_array_index_u32"] + expected: FAIL + + [:decl="array5";arg="f_array_index_i32"] + expected: FAIL + + [:decl="array5";arg="f_array_index_f32"] + expected: FAIL + + [:decl="array5";arg="f_array_index_bool"] + expected: FAIL + + [:decl="array5";arg="texture_sample"] + expected: FAIL + + [:decl="array5";arg="texture_depth"] + expected: FAIL + + [:decl="array5";arg="texture_multisampled"] + expected: FAIL + + [:decl="array5";arg="texture_storage"] + expected: FAIL + + [:decl="array5";arg="texture_external"] + expected: FAIL + + [:decl="array5";arg="sampler"] + expected: FAIL + + [:decl="array5";arg="sampler_comparison"] + expected: FAIL + + [:decl="array5";arg="ptr1"] + expected: FAIL + + [:decl="array5";arg="ptr2"] + expected: FAIL + + [:decl="array5";arg="ptr3"] + expected: FAIL + + [:decl="array5";arg="ptr4"] + expected: FAIL + + [:decl="array5";arg="ptr5"] + expected: FAIL + + [:decl="array5";arg="ptr6"] + expected: FAIL + + [:decl="array5";arg="ptr7"] + expected: FAIL + + [:decl="array5";arg="ptr8"] + expected: FAIL + + [:decl="array5";arg="ptr9"] + expected: FAIL + + [:decl="array5";arg="ptr10"] + expected: FAIL + + [:decl="array5";arg="ptr11"] + expected: FAIL + + [:decl="array5";arg="ptr12"] + expected: FAIL + + [:decl="struct1";arg="u32_literal"] + expected: FAIL + + [:decl="struct1";arg="i32_literal"] + expected: FAIL + + [:decl="struct1";arg="f32_literal"] + expected: FAIL + + [:decl="struct1";arg="bool_literal"] + expected: FAIL + + [:decl="struct1";arg="abstract_int_literal"] + expected: FAIL + + [:decl="struct1";arg="abstract_float_literal"] + expected: FAIL + + [:decl="struct1";arg="vec2u_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec2i_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec2f_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec2b_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec3u_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec3i_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec3f_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec3b_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec4u_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec4i_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec4f_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec4b_constructor"] + expected: FAIL + + [:decl="struct1";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="struct1";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="struct1";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="struct1";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="struct1";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="struct1";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="struct1";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="struct1";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="struct1";arg="array1_constructor"] + expected: FAIL + + [:decl="struct1";arg="array2_constructor"] + expected: FAIL + + [:decl="struct1";arg="array3_constructor"] + expected: FAIL + + [:decl="struct1";arg="array4_constructor"] + expected: FAIL + + [:decl="struct1";arg="array5_constructor"] + expected: FAIL + + [:decl="struct1";arg="struct1_constructor"] + expected: FAIL + + [:decl="struct1";arg="struct2_constructor"] + expected: FAIL + + [:decl="struct1";arg="g_u32"] + expected: FAIL + + [:decl="struct1";arg="g_i32"] + expected: FAIL + + [:decl="struct1";arg="g_f32"] + expected: FAIL + + [:decl="struct1";arg="g_bool"] + expected: FAIL + + [:decl="struct1";arg="g_vec2"] + expected: FAIL + + [:decl="struct1";arg="g_vec3"] + expected: FAIL + + [:decl="struct1";arg="g_vec4"] + expected: FAIL + + [:decl="struct1";arg="g_mat2x2"] + expected: FAIL + + [:decl="struct1";arg="g_mat2x3"] + expected: FAIL + + [:decl="struct1";arg="g_mat2x4"] + expected: FAIL + + [:decl="struct1";arg="g_mat3x2"] + expected: FAIL + + [:decl="struct1";arg="g_mat3x3"] + expected: FAIL + + [:decl="struct1";arg="g_mat3x4"] + expected: FAIL + + [:decl="struct1";arg="g_mat4x2"] + expected: FAIL + + [:decl="struct1";arg="g_mat4x3"] + expected: FAIL + + [:decl="struct1";arg="g_mat4x4"] + expected: FAIL + + [:decl="struct1";arg="g_array1"] + expected: FAIL + + [:decl="struct1";arg="g_array2"] + expected: FAIL + + [:decl="struct1";arg="g_array3"] + expected: FAIL + + [:decl="struct1";arg="g_array4"] + expected: FAIL + + [:decl="struct1";arg="g_array5"] + expected: FAIL + + [:decl="struct1";arg="g_constructible"] + expected: FAIL + + [:decl="struct1";arg="g_struct_with_array"] + expected: FAIL + + [:decl="struct1";arg="f_u32"] + expected: FAIL + + [:decl="struct1";arg="f_i32"] + expected: FAIL + + [:decl="struct1";arg="f_f32"] + expected: FAIL + + [:decl="struct1";arg="f_bool"] + expected: FAIL + + [:decl="struct1";arg="f_vec2"] + expected: FAIL + + [:decl="struct1";arg="f_vec3"] + expected: FAIL + + [:decl="struct1";arg="f_vec4"] + expected: FAIL + + [:decl="struct1";arg="f_mat2x2"] + expected: FAIL + + [:decl="struct1";arg="f_mat2x3"] + expected: FAIL + + [:decl="struct1";arg="f_mat2x4"] + expected: FAIL + + [:decl="struct1";arg="f_mat3x2"] + expected: FAIL + + [:decl="struct1";arg="f_mat3x3"] + expected: FAIL + + [:decl="struct1";arg="f_mat3x4"] + expected: FAIL + + [:decl="struct1";arg="f_mat4x2"] + expected: FAIL + + [:decl="struct1";arg="f_mat4x3"] + expected: FAIL + + [:decl="struct1";arg="f_mat4x4"] + expected: FAIL + + [:decl="struct1";arg="f_array1"] + expected: FAIL + + [:decl="struct1";arg="f_array2"] + expected: FAIL + + [:decl="struct1";arg="f_array3"] + expected: FAIL + + [:decl="struct1";arg="f_array4"] + expected: FAIL + + [:decl="struct1";arg="f_array5"] + expected: FAIL + + [:decl="struct1";arg="f_constructible"] + expected: FAIL + + [:decl="struct1";arg="f_struct_with_array"] + expected: FAIL + + [:decl="struct1";arg="g_index_u32"] + expected: FAIL + + [:decl="struct1";arg="g_index_i32"] + expected: FAIL + + [:decl="struct1";arg="g_index_f32"] + expected: FAIL + + [:decl="struct1";arg="g_index_bool"] + expected: FAIL + + [:decl="struct1";arg="f_index_u32"] + expected: FAIL + + [:decl="struct1";arg="f_index_i32"] + expected: FAIL + + [:decl="struct1";arg="f_index_f32"] + expected: FAIL + + [:decl="struct1";arg="f_index_bool"] + expected: FAIL + + [:decl="struct1";arg="g_array_index_u32"] + expected: FAIL + + [:decl="struct1";arg="g_array_index_i32"] + expected: FAIL + + [:decl="struct1";arg="g_array_index_f32"] + expected: FAIL + + [:decl="struct1";arg="g_array_index_bool"] + expected: FAIL + + [:decl="struct1";arg="f_array_index_u32"] + expected: FAIL + + [:decl="struct1";arg="f_array_index_i32"] + expected: FAIL + + [:decl="struct1";arg="f_array_index_f32"] + expected: FAIL + + [:decl="struct1";arg="f_array_index_bool"] + expected: FAIL + + [:decl="struct1";arg="texture_sample"] + expected: FAIL + + [:decl="struct1";arg="texture_depth"] + expected: FAIL + + [:decl="struct1";arg="texture_multisampled"] + expected: FAIL + + [:decl="struct1";arg="texture_storage"] + expected: FAIL + + [:decl="struct1";arg="texture_external"] + expected: FAIL + + [:decl="struct1";arg="sampler"] + expected: FAIL + + [:decl="struct1";arg="sampler_comparison"] + expected: FAIL + + [:decl="struct1";arg="ptr1"] + expected: FAIL + + [:decl="struct1";arg="ptr2"] + expected: FAIL + + [:decl="struct1";arg="ptr3"] + expected: FAIL + + [:decl="struct1";arg="ptr4"] + expected: FAIL + + [:decl="struct1";arg="ptr5"] + expected: FAIL + + [:decl="struct1";arg="ptr6"] + expected: FAIL + + [:decl="struct1";arg="ptr7"] + expected: FAIL + + [:decl="struct1";arg="ptr8"] + expected: FAIL + + [:decl="struct1";arg="ptr9"] + expected: FAIL + + [:decl="struct1";arg="ptr10"] + expected: FAIL + + [:decl="struct1";arg="ptr11"] + expected: FAIL + + [:decl="struct1";arg="ptr12"] + expected: FAIL + + [:decl="struct2";arg="u32_literal"] + expected: FAIL + + [:decl="struct2";arg="i32_literal"] + expected: FAIL + + [:decl="struct2";arg="f32_literal"] + expected: FAIL + + [:decl="struct2";arg="bool_literal"] + expected: FAIL + + [:decl="struct2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="struct2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="struct2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="struct2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="struct2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="struct2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="struct2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="struct2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="struct2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="struct2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="struct2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="struct2";arg="array1_constructor"] + expected: FAIL + + [:decl="struct2";arg="array2_constructor"] + expected: FAIL + + [:decl="struct2";arg="array3_constructor"] + expected: FAIL + + [:decl="struct2";arg="array4_constructor"] + expected: FAIL + + [:decl="struct2";arg="array5_constructor"] + expected: FAIL + + [:decl="struct2";arg="struct1_constructor"] + expected: FAIL + + [:decl="struct2";arg="struct2_constructor"] + expected: FAIL + + [:decl="struct2";arg="g_u32"] + expected: FAIL + + [:decl="struct2";arg="g_i32"] + expected: FAIL + + [:decl="struct2";arg="g_f32"] + expected: FAIL + + [:decl="struct2";arg="g_bool"] + expected: FAIL + + [:decl="struct2";arg="g_vec2"] + expected: FAIL + + [:decl="struct2";arg="g_vec3"] + expected: FAIL + + [:decl="struct2";arg="g_vec4"] + expected: FAIL + + [:decl="struct2";arg="g_mat2x2"] + expected: FAIL + + [:decl="struct2";arg="g_mat2x3"] + expected: FAIL + + [:decl="struct2";arg="g_mat2x4"] + expected: FAIL + + [:decl="struct2";arg="g_mat3x2"] + expected: FAIL + + [:decl="struct2";arg="g_mat3x3"] + expected: FAIL + + [:decl="struct2";arg="g_mat3x4"] + expected: FAIL + + [:decl="struct2";arg="g_mat4x2"] + expected: FAIL + + [:decl="struct2";arg="g_mat4x3"] + expected: FAIL + + [:decl="struct2";arg="g_mat4x4"] + expected: FAIL + + [:decl="struct2";arg="g_array1"] + expected: FAIL + + [:decl="struct2";arg="g_array2"] + expected: FAIL + + [:decl="struct2";arg="g_array3"] + expected: FAIL + + [:decl="struct2";arg="g_array4"] + expected: FAIL + + [:decl="struct2";arg="g_array5"] + expected: FAIL + + [:decl="struct2";arg="g_constructible"] + expected: FAIL + + [:decl="struct2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="struct2";arg="f_u32"] + expected: FAIL + + [:decl="struct2";arg="f_i32"] + expected: FAIL + + [:decl="struct2";arg="f_f32"] + expected: FAIL + + [:decl="struct2";arg="f_bool"] + expected: FAIL + + [:decl="struct2";arg="f_vec2"] + expected: FAIL + + [:decl="struct2";arg="f_vec3"] + expected: FAIL + + [:decl="struct2";arg="f_vec4"] + expected: FAIL + + [:decl="struct2";arg="f_mat2x2"] + expected: FAIL + + [:decl="struct2";arg="f_mat2x3"] + expected: FAIL + + [:decl="struct2";arg="f_mat2x4"] + expected: FAIL + + [:decl="struct2";arg="f_mat3x2"] + expected: FAIL + + [:decl="struct2";arg="f_mat3x3"] + expected: FAIL + + [:decl="struct2";arg="f_mat3x4"] + expected: FAIL + + [:decl="struct2";arg="f_mat4x2"] + expected: FAIL + + [:decl="struct2";arg="f_mat4x3"] + expected: FAIL + + [:decl="struct2";arg="f_mat4x4"] + expected: FAIL + + [:decl="struct2";arg="f_array1"] + expected: FAIL + + [:decl="struct2";arg="f_array2"] + expected: FAIL + + [:decl="struct2";arg="f_array3"] + expected: FAIL + + [:decl="struct2";arg="f_array4"] + expected: FAIL + + [:decl="struct2";arg="f_array5"] + expected: FAIL + + [:decl="struct2";arg="f_constructible"] + expected: FAIL + + [:decl="struct2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="struct2";arg="g_index_u32"] + expected: FAIL + + [:decl="struct2";arg="g_index_i32"] + expected: FAIL + + [:decl="struct2";arg="g_index_f32"] + expected: FAIL + + [:decl="struct2";arg="g_index_bool"] + expected: FAIL + + [:decl="struct2";arg="f_index_u32"] + expected: FAIL + + [:decl="struct2";arg="f_index_i32"] + expected: FAIL + + [:decl="struct2";arg="f_index_f32"] + expected: FAIL + + [:decl="struct2";arg="f_index_bool"] + expected: FAIL + + [:decl="struct2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="struct2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="struct2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="struct2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="struct2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="struct2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="struct2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="struct2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="struct2";arg="texture_sample"] + expected: FAIL + + [:decl="struct2";arg="texture_depth"] + expected: FAIL + + [:decl="struct2";arg="texture_multisampled"] + expected: FAIL + + [:decl="struct2";arg="texture_storage"] + expected: FAIL + + [:decl="struct2";arg="texture_external"] + expected: FAIL + + [:decl="struct2";arg="sampler"] + expected: FAIL + + [:decl="struct2";arg="sampler_comparison"] + expected: FAIL + + [:decl="struct2";arg="ptr1"] + expected: FAIL + + [:decl="struct2";arg="ptr2"] + expected: FAIL + + [:decl="struct2";arg="ptr3"] + expected: FAIL + + [:decl="struct2";arg="ptr4"] + expected: FAIL + + [:decl="struct2";arg="ptr5"] + expected: FAIL + + [:decl="struct2";arg="ptr6"] + expected: FAIL + + [:decl="struct2";arg="ptr7"] + expected: FAIL + + [:decl="struct2";arg="ptr8"] + expected: FAIL + + [:decl="struct2";arg="ptr9"] + expected: FAIL + + [:decl="struct2";arg="ptr10"] + expected: FAIL + + [:decl="struct2";arg="ptr11"] + expected: FAIL + + [:decl="struct2";arg="ptr12"] + expected: FAIL + + [:decl="texture_sample";arg="u32_literal"] + expected: FAIL + + [:decl="texture_sample";arg="i32_literal"] + expected: FAIL + + [:decl="texture_sample";arg="f32_literal"] + expected: FAIL + + [:decl="texture_sample";arg="bool_literal"] + expected: FAIL + + [:decl="texture_sample";arg="abstract_int_literal"] + expected: FAIL + + [:decl="texture_sample";arg="abstract_float_literal"] + expected: FAIL + + [:decl="texture_sample";arg="vec2u_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec2i_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec2f_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec2b_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec3u_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec3i_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec3f_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec3b_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec4u_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec4i_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec4f_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec4b_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="texture_sample";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="texture_sample";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="texture_sample";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="texture_sample";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="texture_sample";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="texture_sample";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="array1_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="array2_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="array3_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="array4_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="array5_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="struct1_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="struct2_constructor"] + expected: FAIL + + [:decl="texture_sample";arg="g_u32"] + expected: FAIL + + [:decl="texture_sample";arg="g_i32"] + expected: FAIL + + [:decl="texture_sample";arg="g_f32"] + expected: FAIL + + [:decl="texture_sample";arg="g_bool"] + expected: FAIL + + [:decl="texture_sample";arg="g_vec2"] + expected: FAIL + + [:decl="texture_sample";arg="g_vec3"] + expected: FAIL + + [:decl="texture_sample";arg="g_vec4"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat2x2"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat2x3"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat2x4"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat3x2"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat3x3"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat3x4"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat4x2"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat4x3"] + expected: FAIL + + [:decl="texture_sample";arg="g_mat4x4"] + expected: FAIL + + [:decl="texture_sample";arg="g_array1"] + expected: FAIL + + [:decl="texture_sample";arg="g_array2"] + expected: FAIL + + [:decl="texture_sample";arg="g_array3"] + expected: FAIL + + [:decl="texture_sample";arg="g_array4"] + expected: FAIL + + [:decl="texture_sample";arg="g_array5"] + expected: FAIL + + [:decl="texture_sample";arg="g_constructible"] + expected: FAIL + + [:decl="texture_sample";arg="g_struct_with_array"] + expected: FAIL + + [:decl="texture_sample";arg="f_u32"] + expected: FAIL + + [:decl="texture_sample";arg="f_i32"] + expected: FAIL + + [:decl="texture_sample";arg="f_f32"] + expected: FAIL + + [:decl="texture_sample";arg="f_bool"] + expected: FAIL + + [:decl="texture_sample";arg="f_vec2"] + expected: FAIL + + [:decl="texture_sample";arg="f_vec3"] + expected: FAIL + + [:decl="texture_sample";arg="f_vec4"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat2x2"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat2x3"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat2x4"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat3x2"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat3x3"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat3x4"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat4x2"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat4x3"] + expected: FAIL + + [:decl="texture_sample";arg="f_mat4x4"] + expected: FAIL + + [:decl="texture_sample";arg="f_array1"] + expected: FAIL + + [:decl="texture_sample";arg="f_array2"] + expected: FAIL + + [:decl="texture_sample";arg="f_array3"] + expected: FAIL + + [:decl="texture_sample";arg="f_array4"] + expected: FAIL + + [:decl="texture_sample";arg="f_array5"] + expected: FAIL + + [:decl="texture_sample";arg="f_constructible"] + expected: FAIL + + [:decl="texture_sample";arg="f_struct_with_array"] + expected: FAIL + + [:decl="texture_sample";arg="g_index_u32"] + expected: FAIL + + [:decl="texture_sample";arg="g_index_i32"] + expected: FAIL + + [:decl="texture_sample";arg="g_index_f32"] + expected: FAIL + + [:decl="texture_sample";arg="g_index_bool"] + expected: FAIL + + [:decl="texture_sample";arg="f_index_u32"] + expected: FAIL + + [:decl="texture_sample";arg="f_index_i32"] + expected: FAIL + + [:decl="texture_sample";arg="f_index_f32"] + expected: FAIL + + [:decl="texture_sample";arg="f_index_bool"] + expected: FAIL + + [:decl="texture_sample";arg="g_array_index_u32"] + expected: FAIL + + [:decl="texture_sample";arg="g_array_index_i32"] + expected: FAIL + + [:decl="texture_sample";arg="g_array_index_f32"] + expected: FAIL + + [:decl="texture_sample";arg="g_array_index_bool"] + expected: FAIL + + [:decl="texture_sample";arg="f_array_index_u32"] + expected: FAIL + + [:decl="texture_sample";arg="f_array_index_i32"] + expected: FAIL + + [:decl="texture_sample";arg="f_array_index_f32"] + expected: FAIL + + [:decl="texture_sample";arg="f_array_index_bool"] + expected: FAIL + + [:decl="texture_sample";arg="texture_sample"] + expected: FAIL + + [:decl="texture_sample";arg="texture_depth"] + expected: FAIL + + [:decl="texture_sample";arg="texture_multisampled"] + expected: FAIL + + [:decl="texture_sample";arg="texture_storage"] + expected: FAIL + + [:decl="texture_sample";arg="texture_external"] + expected: FAIL + + [:decl="texture_sample";arg="sampler"] + expected: FAIL + + [:decl="texture_sample";arg="sampler_comparison"] + expected: FAIL + + [:decl="texture_sample";arg="ptr1"] + expected: FAIL + + [:decl="texture_sample";arg="ptr2"] + expected: FAIL + + [:decl="texture_sample";arg="ptr3"] + expected: FAIL + + [:decl="texture_sample";arg="ptr4"] + expected: FAIL + + [:decl="texture_sample";arg="ptr5"] + expected: FAIL + + [:decl="texture_sample";arg="ptr6"] + expected: FAIL + + [:decl="texture_sample";arg="ptr7"] + expected: FAIL + + [:decl="texture_sample";arg="ptr8"] + expected: FAIL + + [:decl="texture_sample";arg="ptr9"] + expected: FAIL + + [:decl="texture_sample";arg="ptr10"] + expected: FAIL + + [:decl="texture_sample";arg="ptr11"] + expected: FAIL + + [:decl="texture_sample";arg="ptr12"] + expected: FAIL + + [:decl="texture_depth";arg="u32_literal"] + expected: FAIL + + [:decl="texture_depth";arg="i32_literal"] + expected: FAIL + + [:decl="texture_depth";arg="f32_literal"] + expected: FAIL + + [:decl="texture_depth";arg="bool_literal"] + expected: FAIL + + [:decl="texture_depth";arg="abstract_int_literal"] + expected: FAIL + + [:decl="texture_depth";arg="abstract_float_literal"] + expected: FAIL + + [:decl="texture_depth";arg="vec2u_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec2i_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec2f_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec2b_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec3u_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec3i_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec3f_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec3b_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec4u_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec4i_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec4f_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec4b_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="texture_depth";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="texture_depth";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="texture_depth";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="texture_depth";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="texture_depth";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="texture_depth";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="array1_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="array2_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="array3_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="array4_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="array5_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="struct1_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="struct2_constructor"] + expected: FAIL + + [:decl="texture_depth";arg="g_u32"] + expected: FAIL + + [:decl="texture_depth";arg="g_i32"] + expected: FAIL + + [:decl="texture_depth";arg="g_f32"] + expected: FAIL + + [:decl="texture_depth";arg="g_bool"] + expected: FAIL + + [:decl="texture_depth";arg="g_vec2"] + expected: FAIL + + [:decl="texture_depth";arg="g_vec3"] + expected: FAIL + + [:decl="texture_depth";arg="g_vec4"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat2x2"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat2x3"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat2x4"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat3x2"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat3x3"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat3x4"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat4x2"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat4x3"] + expected: FAIL + + [:decl="texture_depth";arg="g_mat4x4"] + expected: FAIL + + [:decl="texture_depth";arg="g_array1"] + expected: FAIL + + [:decl="texture_depth";arg="g_array2"] + expected: FAIL + + [:decl="texture_depth";arg="g_array3"] + expected: FAIL + + [:decl="texture_depth";arg="g_array4"] + expected: FAIL + + [:decl="texture_depth";arg="g_array5"] + expected: FAIL + + [:decl="texture_depth";arg="g_constructible"] + expected: FAIL + + [:decl="texture_depth";arg="g_struct_with_array"] + expected: FAIL + + [:decl="texture_depth";arg="f_u32"] + expected: FAIL + + [:decl="texture_depth";arg="f_i32"] + expected: FAIL + + [:decl="texture_depth";arg="f_f32"] + expected: FAIL + + [:decl="texture_depth";arg="f_bool"] + expected: FAIL + + [:decl="texture_depth";arg="f_vec2"] + expected: FAIL + + [:decl="texture_depth";arg="f_vec3"] + expected: FAIL + + [:decl="texture_depth";arg="f_vec4"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat2x2"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat2x3"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat2x4"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat3x2"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat3x3"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat3x4"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat4x2"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat4x3"] + expected: FAIL + + [:decl="texture_depth";arg="f_mat4x4"] + expected: FAIL + + [:decl="texture_depth";arg="f_array1"] + expected: FAIL + + [:decl="texture_depth";arg="f_array2"] + expected: FAIL + + [:decl="texture_depth";arg="f_array3"] + expected: FAIL + + [:decl="texture_depth";arg="f_array4"] + expected: FAIL + + [:decl="texture_depth";arg="f_array5"] + expected: FAIL + + [:decl="texture_depth";arg="f_constructible"] + expected: FAIL + + [:decl="texture_depth";arg="f_struct_with_array"] + expected: FAIL + + [:decl="texture_depth";arg="g_index_u32"] + expected: FAIL + + [:decl="texture_depth";arg="g_index_i32"] + expected: FAIL + + [:decl="texture_depth";arg="g_index_f32"] + expected: FAIL + + [:decl="texture_depth";arg="g_index_bool"] + expected: FAIL + + [:decl="texture_depth";arg="f_index_u32"] + expected: FAIL + + [:decl="texture_depth";arg="f_index_i32"] + expected: FAIL + + [:decl="texture_depth";arg="f_index_f32"] + expected: FAIL + + [:decl="texture_depth";arg="f_index_bool"] + expected: FAIL + + [:decl="texture_depth";arg="g_array_index_u32"] + expected: FAIL + + [:decl="texture_depth";arg="g_array_index_i32"] + expected: FAIL + + [:decl="texture_depth";arg="g_array_index_f32"] + expected: FAIL + + [:decl="texture_depth";arg="g_array_index_bool"] + expected: FAIL + + [:decl="texture_depth";arg="f_array_index_u32"] + expected: FAIL + + [:decl="texture_depth";arg="f_array_index_i32"] + expected: FAIL + + [:decl="texture_depth";arg="f_array_index_f32"] + expected: FAIL + + [:decl="texture_depth";arg="f_array_index_bool"] + expected: FAIL + + [:decl="texture_depth";arg="texture_sample"] + expected: FAIL + + [:decl="texture_depth";arg="texture_depth"] + expected: FAIL + + [:decl="texture_depth";arg="texture_multisampled"] + expected: FAIL + + [:decl="texture_depth";arg="texture_storage"] + expected: FAIL + + [:decl="texture_depth";arg="texture_external"] + expected: FAIL + + [:decl="texture_depth";arg="sampler"] + expected: FAIL + + [:decl="texture_depth";arg="sampler_comparison"] + expected: FAIL + + [:decl="texture_depth";arg="ptr1"] + expected: FAIL + + [:decl="texture_depth";arg="ptr2"] + expected: FAIL + + [:decl="texture_depth";arg="ptr3"] + expected: FAIL + + [:decl="texture_depth";arg="ptr4"] + expected: FAIL + + [:decl="texture_depth";arg="ptr5"] + expected: FAIL + + [:decl="texture_depth";arg="ptr6"] + expected: FAIL + + [:decl="texture_depth";arg="ptr7"] + expected: FAIL + + [:decl="texture_depth";arg="ptr8"] + expected: FAIL + + [:decl="texture_depth";arg="ptr9"] + expected: FAIL + + [:decl="texture_depth";arg="ptr10"] + expected: FAIL + + [:decl="texture_depth";arg="ptr11"] + expected: FAIL + + [:decl="texture_depth";arg="ptr12"] + expected: FAIL + + [:decl="texture_multisampled";arg="u32_literal"] + expected: FAIL + + [:decl="texture_multisampled";arg="i32_literal"] + expected: FAIL + + [:decl="texture_multisampled";arg="f32_literal"] + expected: FAIL + + [:decl="texture_multisampled";arg="bool_literal"] + expected: FAIL + + [:decl="texture_multisampled";arg="abstract_int_literal"] + expected: FAIL + + [:decl="texture_multisampled";arg="abstract_float_literal"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec2u_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec2i_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec2f_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec2b_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec3u_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec3i_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec3f_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec3b_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec4u_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec4i_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec4f_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec4b_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="texture_multisampled";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="array1_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="array2_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="array3_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="array4_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="array5_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="struct1_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="struct2_constructor"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_u32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_i32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_f32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_bool"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_vec2"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_vec3"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_vec4"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat2x2"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat2x3"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat2x4"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat3x2"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat3x3"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat3x4"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat4x2"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat4x3"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_mat4x4"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array1"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array2"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array3"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array4"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array5"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_constructible"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_struct_with_array"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_u32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_i32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_f32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_bool"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_vec2"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_vec3"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_vec4"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat2x2"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat2x3"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat2x4"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat3x2"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat3x3"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat3x4"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat4x2"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat4x3"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_mat4x4"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array1"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array2"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array3"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array4"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array5"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_constructible"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_struct_with_array"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_index_u32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_index_i32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_index_f32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_index_bool"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_index_u32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_index_i32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_index_f32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_index_bool"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array_index_u32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array_index_i32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array_index_f32"] + expected: FAIL + + [:decl="texture_multisampled";arg="g_array_index_bool"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array_index_u32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array_index_i32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array_index_f32"] + expected: FAIL + + [:decl="texture_multisampled";arg="f_array_index_bool"] + expected: FAIL + + [:decl="texture_multisampled";arg="texture_sample"] + expected: FAIL + + [:decl="texture_multisampled";arg="texture_depth"] + expected: FAIL + + [:decl="texture_multisampled";arg="texture_multisampled"] + expected: FAIL + + [:decl="texture_multisampled";arg="texture_storage"] + expected: FAIL + + [:decl="texture_multisampled";arg="texture_external"] + expected: FAIL + + [:decl="texture_multisampled";arg="sampler"] + expected: FAIL + + [:decl="texture_multisampled";arg="sampler_comparison"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr1"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr2"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr3"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr4"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr5"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr6"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr7"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr8"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr9"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr10"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr11"] + expected: FAIL + + [:decl="texture_multisampled";arg="ptr12"] + expected: FAIL + + [:decl="texture_storage";arg="u32_literal"] + expected: FAIL + + [:decl="texture_storage";arg="i32_literal"] + expected: FAIL + + [:decl="texture_storage";arg="f32_literal"] + expected: FAIL + + [:decl="texture_storage";arg="bool_literal"] + expected: FAIL + + [:decl="texture_storage";arg="abstract_int_literal"] + expected: FAIL + + [:decl="texture_storage";arg="abstract_float_literal"] + expected: FAIL + + [:decl="texture_storage";arg="vec2u_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec2i_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec2f_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec2b_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec3u_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec3i_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec3f_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec3b_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec4u_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec4i_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec4f_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec4b_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="texture_storage";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="texture_storage";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="texture_storage";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="texture_storage";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="texture_storage";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="texture_storage";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="array1_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="array2_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="array3_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="array4_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="array5_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="struct1_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="struct2_constructor"] + expected: FAIL + + [:decl="texture_storage";arg="g_u32"] + expected: FAIL + + [:decl="texture_storage";arg="g_i32"] + expected: FAIL + + [:decl="texture_storage";arg="g_f32"] + expected: FAIL + + [:decl="texture_storage";arg="g_bool"] + expected: FAIL + + [:decl="texture_storage";arg="g_vec2"] + expected: FAIL + + [:decl="texture_storage";arg="g_vec3"] + expected: FAIL + + [:decl="texture_storage";arg="g_vec4"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat2x2"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat2x3"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat2x4"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat3x2"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat3x3"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat3x4"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat4x2"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat4x3"] + expected: FAIL + + [:decl="texture_storage";arg="g_mat4x4"] + expected: FAIL + + [:decl="texture_storage";arg="g_array1"] + expected: FAIL + + [:decl="texture_storage";arg="g_array2"] + expected: FAIL + + [:decl="texture_storage";arg="g_array3"] + expected: FAIL + + [:decl="texture_storage";arg="g_array4"] + expected: FAIL + + [:decl="texture_storage";arg="g_array5"] + expected: FAIL + + [:decl="texture_storage";arg="g_constructible"] + expected: FAIL + + [:decl="texture_storage";arg="g_struct_with_array"] + expected: FAIL + + [:decl="texture_storage";arg="f_u32"] + expected: FAIL + + [:decl="texture_storage";arg="f_i32"] + expected: FAIL + + [:decl="texture_storage";arg="f_f32"] + expected: FAIL + + [:decl="texture_storage";arg="f_bool"] + expected: FAIL + + [:decl="texture_storage";arg="f_vec2"] + expected: FAIL + + [:decl="texture_storage";arg="f_vec3"] + expected: FAIL + + [:decl="texture_storage";arg="f_vec4"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat2x2"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat2x3"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat2x4"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat3x2"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat3x3"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat3x4"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat4x2"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat4x3"] + expected: FAIL + + [:decl="texture_storage";arg="f_mat4x4"] + expected: FAIL + + [:decl="texture_storage";arg="f_array1"] + expected: FAIL + + [:decl="texture_storage";arg="f_array2"] + expected: FAIL + + [:decl="texture_storage";arg="f_array3"] + expected: FAIL + + [:decl="texture_storage";arg="f_array4"] + expected: FAIL + + [:decl="texture_storage";arg="f_array5"] + expected: FAIL + + [:decl="texture_storage";arg="f_constructible"] + expected: FAIL + + [:decl="texture_storage";arg="f_struct_with_array"] + expected: FAIL + + [:decl="texture_storage";arg="g_index_u32"] + expected: FAIL + + [:decl="texture_storage";arg="g_index_i32"] + expected: FAIL + + [:decl="texture_storage";arg="g_index_f32"] + expected: FAIL + + [:decl="texture_storage";arg="g_index_bool"] + expected: FAIL + + [:decl="texture_storage";arg="f_index_u32"] + expected: FAIL + + [:decl="texture_storage";arg="f_index_i32"] + expected: FAIL + + [:decl="texture_storage";arg="f_index_f32"] + expected: FAIL + + [:decl="texture_storage";arg="f_index_bool"] + expected: FAIL + + [:decl="texture_storage";arg="g_array_index_u32"] + expected: FAIL + + [:decl="texture_storage";arg="g_array_index_i32"] + expected: FAIL + + [:decl="texture_storage";arg="g_array_index_f32"] + expected: FAIL + + [:decl="texture_storage";arg="g_array_index_bool"] + expected: FAIL + + [:decl="texture_storage";arg="f_array_index_u32"] + expected: FAIL + + [:decl="texture_storage";arg="f_array_index_i32"] + expected: FAIL + + [:decl="texture_storage";arg="f_array_index_f32"] + expected: FAIL + + [:decl="texture_storage";arg="f_array_index_bool"] + expected: FAIL + + [:decl="texture_storage";arg="texture_sample"] + expected: FAIL + + [:decl="texture_storage";arg="texture_depth"] + expected: FAIL + + [:decl="texture_storage";arg="texture_multisampled"] + expected: FAIL + + [:decl="texture_storage";arg="texture_storage"] + expected: FAIL + + [:decl="texture_storage";arg="texture_external"] + expected: FAIL + + [:decl="texture_storage";arg="sampler"] + expected: FAIL + + [:decl="texture_storage";arg="sampler_comparison"] + expected: FAIL + + [:decl="texture_storage";arg="ptr1"] + expected: FAIL + + [:decl="texture_storage";arg="ptr2"] + expected: FAIL + + [:decl="texture_storage";arg="ptr3"] + expected: FAIL + + [:decl="texture_storage";arg="ptr4"] + expected: FAIL + + [:decl="texture_storage";arg="ptr5"] + expected: FAIL + + [:decl="texture_storage";arg="ptr6"] + expected: FAIL + + [:decl="texture_storage";arg="ptr7"] + expected: FAIL + + [:decl="texture_storage";arg="ptr8"] + expected: FAIL + + [:decl="texture_storage";arg="ptr9"] + expected: FAIL + + [:decl="texture_storage";arg="ptr10"] + expected: FAIL + + [:decl="texture_storage";arg="ptr11"] + expected: FAIL + + [:decl="texture_storage";arg="ptr12"] + expected: FAIL + + [:decl="sampler";arg="u32_literal"] + expected: FAIL + + [:decl="sampler";arg="i32_literal"] + expected: FAIL + + [:decl="sampler";arg="f32_literal"] + expected: FAIL + + [:decl="sampler";arg="bool_literal"] + expected: FAIL + + [:decl="sampler";arg="abstract_int_literal"] + expected: FAIL + + [:decl="sampler";arg="abstract_float_literal"] + expected: FAIL + + [:decl="sampler";arg="vec2u_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec2i_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec2f_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec2b_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec3u_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec3i_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec3f_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec3b_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec4u_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec4i_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec4f_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec4b_constructor"] + expected: FAIL + + [:decl="sampler";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="sampler";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="sampler";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="sampler";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="sampler";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="sampler";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="sampler";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="sampler";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="sampler";arg="array1_constructor"] + expected: FAIL + + [:decl="sampler";arg="array2_constructor"] + expected: FAIL + + [:decl="sampler";arg="array3_constructor"] + expected: FAIL + + [:decl="sampler";arg="array4_constructor"] + expected: FAIL + + [:decl="sampler";arg="array5_constructor"] + expected: FAIL + + [:decl="sampler";arg="struct1_constructor"] + expected: FAIL + + [:decl="sampler";arg="struct2_constructor"] + expected: FAIL + + [:decl="sampler";arg="g_u32"] + expected: FAIL + + [:decl="sampler";arg="g_i32"] + expected: FAIL + + [:decl="sampler";arg="g_f32"] + expected: FAIL + + [:decl="sampler";arg="g_bool"] + expected: FAIL + + [:decl="sampler";arg="g_vec2"] + expected: FAIL + + [:decl="sampler";arg="g_vec3"] + expected: FAIL + + [:decl="sampler";arg="g_vec4"] + expected: FAIL + + [:decl="sampler";arg="g_mat2x2"] + expected: FAIL + + [:decl="sampler";arg="g_mat2x3"] + expected: FAIL + + [:decl="sampler";arg="g_mat2x4"] + expected: FAIL + + [:decl="sampler";arg="g_mat3x2"] + expected: FAIL + + [:decl="sampler";arg="g_mat3x3"] + expected: FAIL + + [:decl="sampler";arg="g_mat3x4"] + expected: FAIL + + [:decl="sampler";arg="g_mat4x2"] + expected: FAIL + + [:decl="sampler";arg="g_mat4x3"] + expected: FAIL + + [:decl="sampler";arg="g_mat4x4"] + expected: FAIL + + [:decl="sampler";arg="g_array1"] + expected: FAIL + + [:decl="sampler";arg="g_array2"] + expected: FAIL + + [:decl="sampler";arg="g_array3"] + expected: FAIL + + [:decl="sampler";arg="g_array4"] + expected: FAIL + + [:decl="sampler";arg="g_array5"] + expected: FAIL + + [:decl="sampler";arg="g_constructible"] + expected: FAIL + + [:decl="sampler";arg="g_struct_with_array"] + expected: FAIL + + [:decl="sampler";arg="f_u32"] + expected: FAIL + + [:decl="sampler";arg="f_i32"] + expected: FAIL + + [:decl="sampler";arg="f_f32"] + expected: FAIL + + [:decl="sampler";arg="f_bool"] + expected: FAIL + + [:decl="sampler";arg="f_vec2"] + expected: FAIL + + [:decl="sampler";arg="f_vec3"] + expected: FAIL + + [:decl="sampler";arg="f_vec4"] + expected: FAIL + + [:decl="sampler";arg="f_mat2x2"] + expected: FAIL + + [:decl="sampler";arg="f_mat2x3"] + expected: FAIL + + [:decl="sampler";arg="f_mat2x4"] + expected: FAIL + + [:decl="sampler";arg="f_mat3x2"] + expected: FAIL + + [:decl="sampler";arg="f_mat3x3"] + expected: FAIL + + [:decl="sampler";arg="f_mat3x4"] + expected: FAIL + + [:decl="sampler";arg="f_mat4x2"] + expected: FAIL + + [:decl="sampler";arg="f_mat4x3"] + expected: FAIL + + [:decl="sampler";arg="f_mat4x4"] + expected: FAIL + + [:decl="sampler";arg="f_array1"] + expected: FAIL + + [:decl="sampler";arg="f_array2"] + expected: FAIL + + [:decl="sampler";arg="f_array3"] + expected: FAIL + + [:decl="sampler";arg="f_array4"] + expected: FAIL + + [:decl="sampler";arg="f_array5"] + expected: FAIL + + [:decl="sampler";arg="f_constructible"] + expected: FAIL + + [:decl="sampler";arg="f_struct_with_array"] + expected: FAIL + + [:decl="sampler";arg="g_index_u32"] + expected: FAIL + + [:decl="sampler";arg="g_index_i32"] + expected: FAIL + + [:decl="sampler";arg="g_index_f32"] + expected: FAIL + + [:decl="sampler";arg="g_index_bool"] + expected: FAIL + + [:decl="sampler";arg="f_index_u32"] + expected: FAIL + + [:decl="sampler";arg="f_index_i32"] + expected: FAIL + + [:decl="sampler";arg="f_index_f32"] + expected: FAIL + + [:decl="sampler";arg="f_index_bool"] + expected: FAIL + + [:decl="sampler";arg="g_array_index_u32"] + expected: FAIL + + [:decl="sampler";arg="g_array_index_i32"] + expected: FAIL + + [:decl="sampler";arg="g_array_index_f32"] + expected: FAIL + + [:decl="sampler";arg="g_array_index_bool"] + expected: FAIL + + [:decl="sampler";arg="f_array_index_u32"] + expected: FAIL + + [:decl="sampler";arg="f_array_index_i32"] + expected: FAIL + + [:decl="sampler";arg="f_array_index_f32"] + expected: FAIL + + [:decl="sampler";arg="f_array_index_bool"] + expected: FAIL + + [:decl="sampler";arg="texture_sample"] + expected: FAIL + + [:decl="sampler";arg="texture_depth"] + expected: FAIL + + [:decl="sampler";arg="texture_multisampled"] + expected: FAIL + + [:decl="sampler";arg="texture_storage"] + expected: FAIL + + [:decl="sampler";arg="texture_external"] + expected: FAIL + + [:decl="sampler";arg="sampler"] + expected: FAIL + + [:decl="sampler";arg="sampler_comparison"] + expected: FAIL + + [:decl="sampler";arg="ptr1"] + expected: FAIL + + [:decl="sampler";arg="ptr2"] + expected: FAIL + + [:decl="sampler";arg="ptr3"] + expected: FAIL + + [:decl="sampler";arg="ptr4"] + expected: FAIL + + [:decl="sampler";arg="ptr5"] + expected: FAIL + + [:decl="sampler";arg="ptr6"] + expected: FAIL + + [:decl="sampler";arg="ptr7"] + expected: FAIL + + [:decl="sampler";arg="ptr8"] + expected: FAIL + + [:decl="sampler";arg="ptr9"] + expected: FAIL + + [:decl="sampler";arg="ptr10"] + expected: FAIL + + [:decl="sampler";arg="ptr11"] + expected: FAIL + + [:decl="sampler";arg="ptr12"] + expected: FAIL + + [:decl="sampler_comparison";arg="u32_literal"] + expected: FAIL + + [:decl="sampler_comparison";arg="i32_literal"] + expected: FAIL + + [:decl="sampler_comparison";arg="f32_literal"] + expected: FAIL + + [:decl="sampler_comparison";arg="bool_literal"] + expected: FAIL + + [:decl="sampler_comparison";arg="abstract_int_literal"] + expected: FAIL + + [:decl="sampler_comparison";arg="abstract_float_literal"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec2u_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec2i_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec2f_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec2b_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec3u_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec3i_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec3f_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec3b_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec4u_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec4i_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec4f_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec4b_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="sampler_comparison";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="array1_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="array2_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="array3_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="array4_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="array5_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="struct1_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="struct2_constructor"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_u32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_i32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_f32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_bool"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_vec2"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_vec3"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_vec4"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat2x2"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat2x3"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat2x4"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat3x2"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat3x3"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat3x4"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat4x2"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat4x3"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_mat4x4"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array1"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array2"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array3"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array4"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array5"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_constructible"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_struct_with_array"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_u32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_i32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_f32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_bool"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_vec2"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_vec3"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_vec4"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat2x2"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat2x3"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat2x4"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat3x2"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat3x3"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat3x4"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat4x2"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat4x3"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_mat4x4"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array1"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array2"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array3"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array4"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array5"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_constructible"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_struct_with_array"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_index_u32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_index_i32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_index_f32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_index_bool"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_index_u32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_index_i32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_index_f32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_index_bool"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array_index_u32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array_index_i32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array_index_f32"] + expected: FAIL + + [:decl="sampler_comparison";arg="g_array_index_bool"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array_index_u32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array_index_i32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array_index_f32"] + expected: FAIL + + [:decl="sampler_comparison";arg="f_array_index_bool"] + expected: FAIL + + [:decl="sampler_comparison";arg="texture_sample"] + expected: FAIL + + [:decl="sampler_comparison";arg="texture_depth"] + expected: FAIL + + [:decl="sampler_comparison";arg="texture_multisampled"] + expected: FAIL + + [:decl="sampler_comparison";arg="texture_storage"] + expected: FAIL + + [:decl="sampler_comparison";arg="texture_external"] + expected: FAIL + + [:decl="sampler_comparison";arg="sampler"] + expected: FAIL + + [:decl="sampler_comparison";arg="sampler_comparison"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr1"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr2"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr3"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr4"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr5"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr6"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr7"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr8"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr9"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr10"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr11"] + expected: FAIL + + [:decl="sampler_comparison";arg="ptr12"] + expected: FAIL + + [:decl="ptr1";arg="u32_literal"] + expected: FAIL + + [:decl="ptr1";arg="i32_literal"] + expected: FAIL + + [:decl="ptr1";arg="f32_literal"] + expected: FAIL + + [:decl="ptr1";arg="bool_literal"] + expected: FAIL + + [:decl="ptr1";arg="abstract_int_literal"] + expected: FAIL + + [:decl="ptr1";arg="abstract_float_literal"] + expected: FAIL + + [:decl="ptr1";arg="vec2u_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec2i_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec2f_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec2b_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec3u_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec3i_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec3f_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec3b_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec4u_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec4i_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec4f_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec4b_constructor"] + expected: FAIL + + [:decl="ptr1";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="ptr1";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="ptr1";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="ptr1";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="ptr1";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="ptr1";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="ptr1";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="ptr1";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="ptr1";arg="array1_constructor"] + expected: FAIL + + [:decl="ptr1";arg="array2_constructor"] + expected: FAIL + + [:decl="ptr1";arg="array3_constructor"] + expected: FAIL + + [:decl="ptr1";arg="array4_constructor"] + expected: FAIL + + [:decl="ptr1";arg="array5_constructor"] + expected: FAIL + + [:decl="ptr1";arg="struct1_constructor"] + expected: FAIL + + [:decl="ptr1";arg="struct2_constructor"] + expected: FAIL + + [:decl="ptr1";arg="g_u32"] + expected: FAIL + + [:decl="ptr1";arg="g_i32"] + expected: FAIL + + [:decl="ptr1";arg="g_f32"] + expected: FAIL + + [:decl="ptr1";arg="g_bool"] + expected: FAIL + + [:decl="ptr1";arg="g_vec2"] + expected: FAIL + + [:decl="ptr1";arg="g_vec3"] + expected: FAIL + + [:decl="ptr1";arg="g_vec4"] + expected: FAIL + + [:decl="ptr1";arg="g_mat2x2"] + expected: FAIL + + [:decl="ptr1";arg="g_mat2x3"] + expected: FAIL + + [:decl="ptr1";arg="g_mat2x4"] + expected: FAIL + + [:decl="ptr1";arg="g_mat3x2"] + expected: FAIL + + [:decl="ptr1";arg="g_mat3x3"] + expected: FAIL + + [:decl="ptr1";arg="g_mat3x4"] + expected: FAIL + + [:decl="ptr1";arg="g_mat4x2"] + expected: FAIL + + [:decl="ptr1";arg="g_mat4x3"] + expected: FAIL + + [:decl="ptr1";arg="g_mat4x4"] + expected: FAIL + + [:decl="ptr1";arg="g_array1"] + expected: FAIL + + [:decl="ptr1";arg="g_array2"] + expected: FAIL + + [:decl="ptr1";arg="g_array3"] + expected: FAIL + + [:decl="ptr1";arg="g_array4"] + expected: FAIL + + [:decl="ptr1";arg="g_array5"] + expected: FAIL + + [:decl="ptr1";arg="g_constructible"] + expected: FAIL + + [:decl="ptr1";arg="g_struct_with_array"] + expected: FAIL + + [:decl="ptr1";arg="f_u32"] + expected: FAIL + + [:decl="ptr1";arg="f_i32"] + expected: FAIL + + [:decl="ptr1";arg="f_f32"] + expected: FAIL + + [:decl="ptr1";arg="f_bool"] + expected: FAIL + + [:decl="ptr1";arg="f_vec2"] + expected: FAIL + + [:decl="ptr1";arg="f_vec3"] + expected: FAIL + + [:decl="ptr1";arg="f_vec4"] + expected: FAIL + + [:decl="ptr1";arg="f_mat2x2"] + expected: FAIL + + [:decl="ptr1";arg="f_mat2x3"] + expected: FAIL + + [:decl="ptr1";arg="f_mat2x4"] + expected: FAIL + + [:decl="ptr1";arg="f_mat3x2"] + expected: FAIL + + [:decl="ptr1";arg="f_mat3x3"] + expected: FAIL + + [:decl="ptr1";arg="f_mat3x4"] + expected: FAIL + + [:decl="ptr1";arg="f_mat4x2"] + expected: FAIL + + [:decl="ptr1";arg="f_mat4x3"] + expected: FAIL + + [:decl="ptr1";arg="f_mat4x4"] + expected: FAIL + + [:decl="ptr1";arg="f_array1"] + expected: FAIL + + [:decl="ptr1";arg="f_array2"] + expected: FAIL + + [:decl="ptr1";arg="f_array3"] + expected: FAIL + + [:decl="ptr1";arg="f_array4"] + expected: FAIL + + [:decl="ptr1";arg="f_array5"] + expected: FAIL + + [:decl="ptr1";arg="f_constructible"] + expected: FAIL + + [:decl="ptr1";arg="f_struct_with_array"] + expected: FAIL + + [:decl="ptr1";arg="g_index_u32"] + expected: FAIL + + [:decl="ptr1";arg="g_index_i32"] + expected: FAIL + + [:decl="ptr1";arg="g_index_f32"] + expected: FAIL + + [:decl="ptr1";arg="g_index_bool"] + expected: FAIL + + [:decl="ptr1";arg="f_index_u32"] + expected: FAIL + + [:decl="ptr1";arg="f_index_i32"] + expected: FAIL + + [:decl="ptr1";arg="f_index_f32"] + expected: FAIL + + [:decl="ptr1";arg="f_index_bool"] + expected: FAIL + + [:decl="ptr1";arg="g_array_index_u32"] + expected: FAIL + + [:decl="ptr1";arg="g_array_index_i32"] + expected: FAIL + + [:decl="ptr1";arg="g_array_index_f32"] + expected: FAIL + + [:decl="ptr1";arg="g_array_index_bool"] + expected: FAIL + + [:decl="ptr1";arg="f_array_index_u32"] + expected: FAIL + + [:decl="ptr1";arg="f_array_index_i32"] + expected: FAIL + + [:decl="ptr1";arg="f_array_index_f32"] + expected: FAIL + + [:decl="ptr1";arg="f_array_index_bool"] + expected: FAIL + + [:decl="ptr1";arg="texture_sample"] + expected: FAIL + + [:decl="ptr1";arg="texture_depth"] + expected: FAIL + + [:decl="ptr1";arg="texture_multisampled"] + expected: FAIL + + [:decl="ptr1";arg="texture_storage"] + expected: FAIL + + [:decl="ptr1";arg="texture_external"] + expected: FAIL + + [:decl="ptr1";arg="sampler"] + expected: FAIL + + [:decl="ptr1";arg="sampler_comparison"] + expected: FAIL + + [:decl="ptr1";arg="ptr1"] + expected: FAIL + + [:decl="ptr1";arg="ptr2"] + expected: FAIL + + [:decl="ptr1";arg="ptr3"] + expected: FAIL + + [:decl="ptr1";arg="ptr4"] + expected: FAIL + + [:decl="ptr1";arg="ptr5"] + expected: FAIL + + [:decl="ptr1";arg="ptr6"] + expected: FAIL + + [:decl="ptr1";arg="ptr7"] + expected: FAIL + + [:decl="ptr1";arg="ptr8"] + expected: FAIL + + [:decl="ptr1";arg="ptr9"] + expected: FAIL + + [:decl="ptr1";arg="ptr10"] + expected: FAIL + + [:decl="ptr1";arg="ptr11"] + expected: FAIL + + [:decl="ptr1";arg="ptr12"] + expected: FAIL + + [:decl="ptr2";arg="u32_literal"] + expected: FAIL + + [:decl="ptr2";arg="i32_literal"] + expected: FAIL + + [:decl="ptr2";arg="f32_literal"] + expected: FAIL + + [:decl="ptr2";arg="bool_literal"] + expected: FAIL + + [:decl="ptr2";arg="abstract_int_literal"] + expected: FAIL + + [:decl="ptr2";arg="abstract_float_literal"] + expected: FAIL + + [:decl="ptr2";arg="vec2u_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec2i_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec2f_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec2b_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec3u_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec3i_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec3f_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec3b_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec4u_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec4i_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec4f_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec4b_constructor"] + expected: FAIL + + [:decl="ptr2";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="ptr2";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="ptr2";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="ptr2";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="ptr2";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="ptr2";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="ptr2";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="ptr2";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="ptr2";arg="array1_constructor"] + expected: FAIL + + [:decl="ptr2";arg="array2_constructor"] + expected: FAIL + + [:decl="ptr2";arg="array3_constructor"] + expected: FAIL + + [:decl="ptr2";arg="array4_constructor"] + expected: FAIL + + [:decl="ptr2";arg="array5_constructor"] + expected: FAIL + + [:decl="ptr2";arg="struct1_constructor"] + expected: FAIL + + [:decl="ptr2";arg="struct2_constructor"] + expected: FAIL + + [:decl="ptr2";arg="g_u32"] + expected: FAIL + + [:decl="ptr2";arg="g_i32"] + expected: FAIL + + [:decl="ptr2";arg="g_f32"] + expected: FAIL + + [:decl="ptr2";arg="g_bool"] + expected: FAIL + + [:decl="ptr2";arg="g_vec2"] + expected: FAIL + + [:decl="ptr2";arg="g_vec3"] + expected: FAIL + + [:decl="ptr2";arg="g_vec4"] + expected: FAIL + + [:decl="ptr2";arg="g_mat2x2"] + expected: FAIL + + [:decl="ptr2";arg="g_mat2x3"] + expected: FAIL + + [:decl="ptr2";arg="g_mat2x4"] + expected: FAIL + + [:decl="ptr2";arg="g_mat3x2"] + expected: FAIL + + [:decl="ptr2";arg="g_mat3x3"] + expected: FAIL + + [:decl="ptr2";arg="g_mat3x4"] + expected: FAIL + + [:decl="ptr2";arg="g_mat4x2"] + expected: FAIL + + [:decl="ptr2";arg="g_mat4x3"] + expected: FAIL + + [:decl="ptr2";arg="g_mat4x4"] + expected: FAIL + + [:decl="ptr2";arg="g_array1"] + expected: FAIL + + [:decl="ptr2";arg="g_array2"] + expected: FAIL + + [:decl="ptr2";arg="g_array3"] + expected: FAIL + + [:decl="ptr2";arg="g_array4"] + expected: FAIL + + [:decl="ptr2";arg="g_array5"] + expected: FAIL + + [:decl="ptr2";arg="g_constructible"] + expected: FAIL + + [:decl="ptr2";arg="g_struct_with_array"] + expected: FAIL + + [:decl="ptr2";arg="f_u32"] + expected: FAIL + + [:decl="ptr2";arg="f_i32"] + expected: FAIL + + [:decl="ptr2";arg="f_f32"] + expected: FAIL + + [:decl="ptr2";arg="f_bool"] + expected: FAIL + + [:decl="ptr2";arg="f_vec2"] + expected: FAIL + + [:decl="ptr2";arg="f_vec3"] + expected: FAIL + + [:decl="ptr2";arg="f_vec4"] + expected: FAIL + + [:decl="ptr2";arg="f_mat2x2"] + expected: FAIL + + [:decl="ptr2";arg="f_mat2x3"] + expected: FAIL + + [:decl="ptr2";arg="f_mat2x4"] + expected: FAIL + + [:decl="ptr2";arg="f_mat3x2"] + expected: FAIL + + [:decl="ptr2";arg="f_mat3x3"] + expected: FAIL + + [:decl="ptr2";arg="f_mat3x4"] + expected: FAIL + + [:decl="ptr2";arg="f_mat4x2"] + expected: FAIL + + [:decl="ptr2";arg="f_mat4x3"] + expected: FAIL + + [:decl="ptr2";arg="f_mat4x4"] + expected: FAIL + + [:decl="ptr2";arg="f_array1"] + expected: FAIL + + [:decl="ptr2";arg="f_array2"] + expected: FAIL + + [:decl="ptr2";arg="f_array3"] + expected: FAIL + + [:decl="ptr2";arg="f_array4"] + expected: FAIL + + [:decl="ptr2";arg="f_array5"] + expected: FAIL + + [:decl="ptr2";arg="f_constructible"] + expected: FAIL + + [:decl="ptr2";arg="f_struct_with_array"] + expected: FAIL + + [:decl="ptr2";arg="g_index_u32"] + expected: FAIL + + [:decl="ptr2";arg="g_index_i32"] + expected: FAIL + + [:decl="ptr2";arg="g_index_f32"] + expected: FAIL + + [:decl="ptr2";arg="g_index_bool"] + expected: FAIL + + [:decl="ptr2";arg="f_index_u32"] + expected: FAIL + + [:decl="ptr2";arg="f_index_i32"] + expected: FAIL + + [:decl="ptr2";arg="f_index_f32"] + expected: FAIL + + [:decl="ptr2";arg="f_index_bool"] + expected: FAIL + + [:decl="ptr2";arg="g_array_index_u32"] + expected: FAIL + + [:decl="ptr2";arg="g_array_index_i32"] + expected: FAIL + + [:decl="ptr2";arg="g_array_index_f32"] + expected: FAIL + + [:decl="ptr2";arg="g_array_index_bool"] + expected: FAIL + + [:decl="ptr2";arg="f_array_index_u32"] + expected: FAIL + + [:decl="ptr2";arg="f_array_index_i32"] + expected: FAIL + + [:decl="ptr2";arg="f_array_index_f32"] + expected: FAIL + + [:decl="ptr2";arg="f_array_index_bool"] + expected: FAIL + + [:decl="ptr2";arg="texture_sample"] + expected: FAIL + + [:decl="ptr2";arg="texture_depth"] + expected: FAIL + + [:decl="ptr2";arg="texture_multisampled"] + expected: FAIL + + [:decl="ptr2";arg="texture_storage"] + expected: FAIL + + [:decl="ptr2";arg="texture_external"] + expected: FAIL + + [:decl="ptr2";arg="sampler"] + expected: FAIL + + [:decl="ptr2";arg="sampler_comparison"] + expected: FAIL + + [:decl="ptr2";arg="ptr1"] + expected: FAIL + + [:decl="ptr2";arg="ptr2"] + expected: FAIL + + [:decl="ptr2";arg="ptr3"] + expected: FAIL + + [:decl="ptr2";arg="ptr4"] + expected: FAIL + + [:decl="ptr2";arg="ptr5"] + expected: FAIL + + [:decl="ptr2";arg="ptr6"] + expected: FAIL + + [:decl="ptr2";arg="ptr7"] + expected: FAIL + + [:decl="ptr2";arg="ptr8"] + expected: FAIL + + [:decl="ptr2";arg="ptr9"] + expected: FAIL + + [:decl="ptr2";arg="ptr10"] + expected: FAIL + + [:decl="ptr2";arg="ptr11"] + expected: FAIL + + [:decl="ptr2";arg="ptr12"] + expected: FAIL + + [:decl="ptr3";arg="u32_literal"] + expected: FAIL + + [:decl="ptr3";arg="i32_literal"] + expected: FAIL + + [:decl="ptr3";arg="f32_literal"] + expected: FAIL + + [:decl="ptr3";arg="bool_literal"] + expected: FAIL + + [:decl="ptr3";arg="abstract_int_literal"] + expected: FAIL + + [:decl="ptr3";arg="abstract_float_literal"] + expected: FAIL + + [:decl="ptr3";arg="vec2u_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec2i_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec2f_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec2b_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec3u_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec3i_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec3f_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec3b_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec4u_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec4i_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec4f_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec4b_constructor"] + expected: FAIL + + [:decl="ptr3";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="ptr3";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="ptr3";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="ptr3";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="ptr3";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="ptr3";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="ptr3";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="ptr3";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="ptr3";arg="array1_constructor"] + expected: FAIL + + [:decl="ptr3";arg="array2_constructor"] + expected: FAIL + + [:decl="ptr3";arg="array3_constructor"] + expected: FAIL + + [:decl="ptr3";arg="array4_constructor"] + expected: FAIL + + [:decl="ptr3";arg="array5_constructor"] + expected: FAIL + + [:decl="ptr3";arg="struct1_constructor"] + expected: FAIL + + [:decl="ptr3";arg="struct2_constructor"] + expected: FAIL + + [:decl="ptr3";arg="g_u32"] + expected: FAIL + + [:decl="ptr3";arg="g_i32"] + expected: FAIL + + [:decl="ptr3";arg="g_f32"] + expected: FAIL + + [:decl="ptr3";arg="g_bool"] + expected: FAIL + + [:decl="ptr3";arg="g_vec2"] + expected: FAIL + + [:decl="ptr3";arg="g_vec3"] + expected: FAIL + + [:decl="ptr3";arg="g_vec4"] + expected: FAIL + + [:decl="ptr3";arg="g_mat2x2"] + expected: FAIL + + [:decl="ptr3";arg="g_mat2x3"] + expected: FAIL + + [:decl="ptr3";arg="g_mat2x4"] + expected: FAIL + + [:decl="ptr3";arg="g_mat3x2"] + expected: FAIL + + [:decl="ptr3";arg="g_mat3x3"] + expected: FAIL + + [:decl="ptr3";arg="g_mat3x4"] + expected: FAIL + + [:decl="ptr3";arg="g_mat4x2"] + expected: FAIL + + [:decl="ptr3";arg="g_mat4x3"] + expected: FAIL + + [:decl="ptr3";arg="g_mat4x4"] + expected: FAIL + + [:decl="ptr3";arg="g_array1"] + expected: FAIL + + [:decl="ptr3";arg="g_array2"] + expected: FAIL + + [:decl="ptr3";arg="g_array3"] + expected: FAIL + + [:decl="ptr3";arg="g_array4"] + expected: FAIL + + [:decl="ptr3";arg="g_array5"] + expected: FAIL + + [:decl="ptr3";arg="g_constructible"] + expected: FAIL + + [:decl="ptr3";arg="g_struct_with_array"] + expected: FAIL + + [:decl="ptr3";arg="f_u32"] + expected: FAIL + + [:decl="ptr3";arg="f_i32"] + expected: FAIL + + [:decl="ptr3";arg="f_f32"] + expected: FAIL + + [:decl="ptr3";arg="f_bool"] + expected: FAIL + + [:decl="ptr3";arg="f_vec2"] + expected: FAIL + + [:decl="ptr3";arg="f_vec3"] + expected: FAIL + + [:decl="ptr3";arg="f_vec4"] + expected: FAIL + + [:decl="ptr3";arg="f_mat2x2"] + expected: FAIL + + [:decl="ptr3";arg="f_mat2x3"] + expected: FAIL + + [:decl="ptr3";arg="f_mat2x4"] + expected: FAIL + + [:decl="ptr3";arg="f_mat3x2"] + expected: FAIL + + [:decl="ptr3";arg="f_mat3x3"] + expected: FAIL + + [:decl="ptr3";arg="f_mat3x4"] + expected: FAIL + + [:decl="ptr3";arg="f_mat4x2"] + expected: FAIL + + [:decl="ptr3";arg="f_mat4x3"] + expected: FAIL + + [:decl="ptr3";arg="f_mat4x4"] + expected: FAIL + + [:decl="ptr3";arg="f_array1"] + expected: FAIL + + [:decl="ptr3";arg="f_array2"] + expected: FAIL + + [:decl="ptr3";arg="f_array3"] + expected: FAIL + + [:decl="ptr3";arg="f_array4"] + expected: FAIL + + [:decl="ptr3";arg="f_array5"] + expected: FAIL + + [:decl="ptr3";arg="f_constructible"] + expected: FAIL + + [:decl="ptr3";arg="f_struct_with_array"] + expected: FAIL + + [:decl="ptr3";arg="g_index_u32"] + expected: FAIL + + [:decl="ptr3";arg="g_index_i32"] + expected: FAIL + + [:decl="ptr3";arg="g_index_f32"] + expected: FAIL + + [:decl="ptr3";arg="g_index_bool"] + expected: FAIL + + [:decl="ptr3";arg="f_index_u32"] + expected: FAIL + + [:decl="ptr3";arg="f_index_i32"] + expected: FAIL + + [:decl="ptr3";arg="f_index_f32"] + expected: FAIL + + [:decl="ptr3";arg="f_index_bool"] + expected: FAIL + + [:decl="ptr3";arg="g_array_index_u32"] + expected: FAIL + + [:decl="ptr3";arg="g_array_index_i32"] + expected: FAIL + + [:decl="ptr3";arg="g_array_index_f32"] + expected: FAIL + + [:decl="ptr3";arg="g_array_index_bool"] + expected: FAIL + + [:decl="ptr3";arg="f_array_index_u32"] + expected: FAIL + + [:decl="ptr3";arg="f_array_index_i32"] + expected: FAIL + + [:decl="ptr3";arg="f_array_index_f32"] + expected: FAIL + + [:decl="ptr3";arg="f_array_index_bool"] + expected: FAIL + + [:decl="ptr3";arg="texture_sample"] + expected: FAIL + + [:decl="ptr3";arg="texture_depth"] + expected: FAIL + + [:decl="ptr3";arg="texture_multisampled"] + expected: FAIL + + [:decl="ptr3";arg="texture_storage"] + expected: FAIL + + [:decl="ptr3";arg="texture_external"] + expected: FAIL + + [:decl="ptr3";arg="sampler"] + expected: FAIL + + [:decl="ptr3";arg="sampler_comparison"] + expected: FAIL + + [:decl="ptr3";arg="ptr1"] + expected: FAIL + + [:decl="ptr3";arg="ptr2"] + expected: FAIL + + [:decl="ptr3";arg="ptr3"] + expected: FAIL + + [:decl="ptr3";arg="ptr4"] + expected: FAIL + + [:decl="ptr3";arg="ptr5"] + expected: FAIL + + [:decl="ptr3";arg="ptr6"] + expected: FAIL + + [:decl="ptr3";arg="ptr7"] + expected: FAIL + + [:decl="ptr3";arg="ptr8"] + expected: FAIL + + [:decl="ptr3";arg="ptr9"] + expected: FAIL + + [:decl="ptr3";arg="ptr10"] + expected: FAIL + + [:decl="ptr3";arg="ptr11"] + expected: FAIL + + [:decl="ptr3";arg="ptr12"] + expected: FAIL + + [:decl="ptr4";arg="u32_literal"] + expected: FAIL + + [:decl="ptr4";arg="i32_literal"] + expected: FAIL + + [:decl="ptr4";arg="f32_literal"] + expected: FAIL + + [:decl="ptr4";arg="bool_literal"] + expected: FAIL + + [:decl="ptr4";arg="abstract_int_literal"] + expected: FAIL + + [:decl="ptr4";arg="abstract_float_literal"] + expected: FAIL + + [:decl="ptr4";arg="vec2u_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec2i_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec2f_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec2b_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec3u_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec3i_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec3f_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec3b_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec4u_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec4i_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec4f_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec4b_constructor"] + expected: FAIL + + [:decl="ptr4";arg="vec2_abstract_int"] + expected: FAIL + + [:decl="ptr4";arg="vec2_abstract_float"] + expected: FAIL + + [:decl="ptr4";arg="vec3_abstract_int"] + expected: FAIL + + [:decl="ptr4";arg="vec3_abstract_float"] + expected: FAIL + + [:decl="ptr4";arg="vec4_abstract_int"] + expected: FAIL + + [:decl="ptr4";arg="vec4_abstract_float"] + expected: FAIL + + [:decl="ptr4";arg="mat2x2_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat2x3_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat2x4_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat3x2_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat3x3_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat3x4_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat4x2_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat4x3_constructor"] + expected: FAIL + + [:decl="ptr4";arg="mat4x4_constructor"] + expected: FAIL + + [:decl="ptr4";arg="array1_constructor"] + expected: FAIL + + [:decl="ptr4";arg="array2_constructor"] + expected: FAIL + + [:decl="ptr4";arg="array3_constructor"] + expected: FAIL + + [:decl="ptr4";arg="array4_constructor"] + expected: FAIL + + [:decl="ptr4";arg="array5_constructor"] + expected: FAIL + + [:decl="ptr4";arg="struct1_constructor"] + expected: FAIL + + [:decl="ptr4";arg="struct2_constructor"] + expected: FAIL + + [:decl="ptr4";arg="g_u32"] + expected: FAIL + + [:decl="ptr4";arg="g_i32"] + expected: FAIL + + [:decl="ptr4";arg="g_f32"] + expected: FAIL + + [:decl="ptr4";arg="g_bool"] + expected: FAIL + + [:decl="ptr4";arg="g_vec2"] + expected: FAIL + + [:decl="ptr4";arg="g_vec3"] + expected: FAIL + + [:decl="ptr4";arg="g_vec4"] + expected: FAIL + + [:decl="ptr4";arg="g_mat2x2"] + expected: FAIL + + [:decl="ptr4";arg="g_mat2x3"] + expected: FAIL + + [:decl="ptr4";arg="g_mat2x4"] + expected: FAIL + + [:decl="ptr4";arg="g_mat3x2"] + expected: FAIL + + [:decl="ptr4";arg="g_mat3x3"] + expected: FAIL + + [:decl="ptr4";arg="g_mat3x4"] + expected: FAIL + + [:decl="ptr4";arg="g_mat4x2"] + expected: FAIL + + [:decl="ptr4";arg="g_mat4x3"] + expected: FAIL + + [:decl="ptr4";arg="g_mat4x4"] + expected: FAIL + + [:decl="ptr4";arg="g_array1"] + expected: FAIL + + [:decl="ptr4";arg="g_array2"] + expected: FAIL + + [:decl="ptr4";arg="g_array3"] + expected: FAIL + + [:decl="ptr4";arg="g_array4"] + expected: FAIL + + [:decl="ptr4";arg="g_array5"] + expected: FAIL + + [:decl="ptr4";arg="g_constructible"] + expected: FAIL + + [:decl="ptr4";arg="g_struct_with_array"] + expected: FAIL + + [:decl="ptr4";arg="f_u32"] + expected: FAIL + + [:decl="ptr4";arg="f_i32"] + expected: FAIL + + [:decl="ptr4";arg="f_f32"] + expected: FAIL + + [:decl="ptr4";arg="f_bool"] + expected: FAIL + + [:decl="ptr4";arg="f_vec2"] + expected: FAIL + + [:decl="ptr4";arg="f_vec3"] + expected: FAIL + + [:decl="ptr4";arg="f_vec4"] + expected: FAIL + + [:decl="ptr4";arg="f_mat2x2"] + expected: FAIL + + [:decl="ptr4";arg="f_mat2x3"] + expected: FAIL + + [:decl="ptr4";arg="f_mat2x4"] + expected: FAIL + + [:decl="ptr4";arg="f_mat3x2"] + expected: FAIL + + [:decl="ptr4";arg="f_mat3x3"] + expected: FAIL + + [:decl="ptr4";arg="f_mat3x4"] + expected: FAIL + + [:decl="ptr4";arg="f_mat4x2"] + expected: FAIL + + [:decl="ptr4";arg="f_mat4x3"] + expected: FAIL + + [:decl="ptr4";arg="f_mat4x4"] + expected: FAIL + + [:decl="ptr4";arg="f_array1"] + expected: FAIL + + [:decl="ptr4";arg="f_array2"] + expected: FAIL + + [:decl="ptr4";arg="f_array3"] + expected: FAIL + + [:decl="ptr4";arg="f_array4"] + expected: FAIL + + [:decl="ptr4";arg="f_array5"] + expected: FAIL + + [:decl="ptr4";arg="f_constructible"] + expected: FAIL + + [:decl="ptr4";arg="f_struct_with_array"] + expected: FAIL + + [:decl="ptr4";arg="g_index_u32"] + expected: FAIL + + [:decl="ptr4";arg="g_index_i32"] + expected: FAIL + + [:decl="ptr4";arg="g_index_f32"] + expected: FAIL + + [:decl="ptr4";arg="g_index_bool"] + expected: FAIL + + [:decl="ptr4";arg="f_index_u32"] + expected: FAIL + + [:decl="ptr4";arg="f_index_i32"] + expected: FAIL + + [:decl="ptr4";arg="f_index_f32"] + expected: FAIL + + [:decl="ptr4";arg="f_index_bool"] + expected: FAIL + + [:decl="ptr4";arg="g_array_index_u32"] + expected: FAIL + + [:decl="ptr4";arg="g_array_index_i32"] + expected: FAIL + + [:decl="ptr4";arg="g_array_index_f32"] + expected: FAIL + + [:decl="ptr4";arg="g_array_index_bool"] + expected: FAIL + + [:decl="ptr4";arg="f_array_index_u32"] + expected: FAIL + + [:decl="ptr4";arg="f_array_index_i32"] + expected: FAIL + + [:decl="ptr4";arg="f_array_index_f32"] + expected: FAIL + + [:decl="ptr4";arg="f_array_index_bool"] + expected: FAIL + + [:decl="ptr4";arg="texture_sample"] + expected: FAIL + + [:decl="ptr4";arg="texture_depth"] + expected: FAIL + + [:decl="ptr4";arg="texture_multisampled"] + expected: FAIL + + [:decl="ptr4";arg="texture_storage"] + expected: FAIL + + [:decl="ptr4";arg="texture_external"] + expected: FAIL + + [:decl="ptr4";arg="sampler"] + expected: FAIL + + [:decl="ptr4";arg="sampler_comparison"] + expected: FAIL + + [:decl="ptr4";arg="ptr1"] + expected: FAIL + + [:decl="ptr4";arg="ptr2"] + expected: FAIL + + [:decl="ptr4";arg="ptr3"] + expected: FAIL + + [:decl="ptr4";arg="ptr4"] + expected: FAIL + + [:decl="ptr4";arg="ptr5"] + expected: FAIL + + [:decl="ptr4";arg="ptr6"] + expected: FAIL + + [:decl="ptr4";arg="ptr7"] + expected: FAIL + + [:decl="ptr4";arg="ptr8"] + expected: FAIL + + [:decl="ptr4";arg="ptr9"] + expected: FAIL + + [:decl="ptr4";arg="ptr10"] + expected: FAIL + + [:decl="ptr4";arg="ptr11"] + expected: FAIL + + [:decl="ptr4";arg="ptr12"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:binary_expressions:*] + [:e1="literal";e2="literal";op="plus"] + expected: FAIL + + [:e1="literal";e2="literal";op="minus"] + expected: FAIL + + [:e1="literal";e2="literal";op="times"] + expected: FAIL + + [:e1="literal";e2="literal";op="div"] + expected: FAIL + + [:e1="literal";e2="literal";op="rem"] + expected: FAIL + + [:e1="literal";e2="literal";op="and"] + expected: FAIL + + [:e1="literal";e2="literal";op="or"] + expected: FAIL + + [:e1="literal";e2="literal";op="xor"] + expected: FAIL + + [:e1="literal";e2="literal";op="shl"] + expected: FAIL + + [:e1="literal";e2="literal";op="shr"] + expected: FAIL + + [:e1="literal";e2="literal";op="less"] + expected: FAIL + + [:e1="literal";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="literal";op="greater"] + expected: FAIL + + [:e1="literal";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="literal";op="equal"] + expected: FAIL + + [:e1="literal";e2="literal";op="notequal"] + expected: FAIL + + [:e1="literal";e2="uniform";op="plus"] + expected: FAIL + + [:e1="literal";e2="uniform";op="minus"] + expected: FAIL + + [:e1="literal";e2="uniform";op="times"] + expected: FAIL + + [:e1="literal";e2="uniform";op="div"] + expected: FAIL + + [:e1="literal";e2="uniform";op="rem"] + expected: FAIL + + [:e1="literal";e2="uniform";op="and"] + expected: FAIL + + [:e1="literal";e2="uniform";op="or"] + expected: FAIL + + [:e1="literal";e2="uniform";op="xor"] + expected: FAIL + + [:e1="literal";e2="uniform";op="shl"] + expected: FAIL + + [:e1="literal";e2="uniform";op="shr"] + expected: FAIL + + [:e1="literal";e2="uniform";op="less"] + expected: FAIL + + [:e1="literal";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="uniform";op="greater"] + expected: FAIL + + [:e1="literal";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="uniform";op="equal"] + expected: FAIL + + [:e1="literal";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="literal";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="literal";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="literal";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="literal";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="literal";op="plus"] + expected: FAIL + + [:e1="uniform";e2="literal";op="minus"] + expected: FAIL + + [:e1="uniform";e2="literal";op="times"] + expected: FAIL + + [:e1="uniform";e2="literal";op="div"] + expected: FAIL + + [:e1="uniform";e2="literal";op="rem"] + expected: FAIL + + [:e1="uniform";e2="literal";op="and"] + expected: FAIL + + [:e1="uniform";e2="literal";op="or"] + expected: FAIL + + [:e1="uniform";e2="literal";op="xor"] + expected: FAIL + + [:e1="uniform";e2="literal";op="shl"] + expected: FAIL + + [:e1="uniform";e2="literal";op="shr"] + expected: FAIL + + [:e1="uniform";e2="literal";op="less"] + expected: FAIL + + [:e1="uniform";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="literal";op="greater"] + expected: FAIL + + [:e1="uniform";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="literal";op="equal"] + expected: FAIL + + [:e1="uniform";e2="literal";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="plus"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="minus"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="times"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="div"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="rem"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="and"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="or"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="xor"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="shl"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="shr"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="less"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="greater"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="equal"] + expected: FAIL + + [:e1="uniform";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="uniform";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="uniform";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="uniform";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="literal";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="literal";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="uniform_index";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="literal";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform_index1";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="literal";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform_index2";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="literal";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="uniform_struct";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="literal";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_index";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index1";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_index2";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="uniform_struct";op="notequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="plus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="minus"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="times"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="div"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="rem"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="and"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="or"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="xor"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="shl"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="shr"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="less"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="lessequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="greater"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="greaterequal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="equal"] + expected: FAIL + + [:e1="nonuniform_struct";e2="nonuniform_struct";op="notequal"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:param_scope_is_function_body:*] + [:use="body"] + expected: FAIL + + [:use="var"] + expected: FAIL + + [:use="const"] + expected: FAIL + + [:use="override"] + expected: FAIL + + [:use="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:subcalls:*] + [:a_use="no_access";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_struct_attribute:*] + [:target="i32";attribute="align"] + expected: FAIL + + [:target="i32";attribute="location"] + expected: FAIL + + [:target="i32";attribute="size"] + expected: FAIL + + [:target="S";attribute="align"] + expected: FAIL + + [:target="S";attribute="location"] + expected: FAIL + + [:target="S";attribute="size"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_type_nonconstructible:*] + [:var="s";direction="to"] + expected: FAIL + + [:var="s";direction="from"] + expected: FAIL + + [:var="t";direction="to"] + expected: FAIL + + [:var="t";direction="from"] + expected: FAIL + + [:var="b";direction="to"] + expected: FAIL + + [:var="b";direction="from"] + expected: FAIL + + [:var="p";direction="to"] + expected: FAIL + + [:var="p";direction="from"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_array_element:*] + [:target="i32"] + expected: FAIL + + [:target="S"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:unary_expressions:*] + [:e="literal";op="!b_tmp"] + expected: FAIL + + [:e="literal";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="literal";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="uniform";op="!b_tmp"] + expected: FAIL + + [:e="uniform";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="uniform";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="nonuniform";op="!b_tmp"] + expected: FAIL + + [:e="nonuniform";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="nonuniform";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="uniform_index";op="!b_tmp"] + expected: FAIL + + [:e="uniform_index";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="uniform_index";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="nonuniform_index1";op="!b_tmp"] + expected: FAIL + + [:e="nonuniform_index1";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="nonuniform_index1";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="nonuniform_index2";op="!b_tmp"] + expected: FAIL + + [:e="nonuniform_index2";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="nonuniform_index2";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="uniform_struct";op="!b_tmp"] + expected: FAIL + + [:e="uniform_struct";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="uniform_struct";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + [:e="nonuniform_struct";op="!b_tmp"] + expected: FAIL + + [:e="nonuniform_struct";op="~i_tmp%20%3E%200"] + expected: FAIL + + [:e="nonuniform_struct";op="-i32(i_tmp)%20%3E%200"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:function_return_types:*] + [:case="u32"] + expected: FAIL + + [:case="i32"] + expected: FAIL + + [:case="f32"] + expected: FAIL + + [:case="bool"] + expected: FAIL + + [:case="vec2"] + expected: FAIL + + [:case="vec3"] + expected: FAIL + + [:case="vec4"] + expected: FAIL + + [:case="mat2x2"] + expected: FAIL + + [:case="mat2x3"] + expected: FAIL + + [:case="mat2x4"] + expected: FAIL + + [:case="mat3x2"] + expected: FAIL + + [:case="mat3x3"] + expected: FAIL + + [:case="mat3x4"] + expected: FAIL + + [:case="mat4x2"] + expected: FAIL + + [:case="mat4x3"] + expected: FAIL + + [:case="mat4x4"] + expected: FAIL + + [:case="array1"] + expected: FAIL + + [:case="array2"] + expected: FAIL + + [:case="array3"] + expected: FAIL + + [:case="array4"] + expected: FAIL + + [:case="array5"] + expected: FAIL + + [:case="struct1"] + expected: FAIL + + [:case="struct2"] + expected: FAIL + + [:case="runtime_array"] + expected: FAIL + + [:case="runtime_struct"] + expected: FAIL + + [:case="override_array"] + expected: FAIL + + [:case="atomic_u32"] + expected: FAIL + + [:case="atomic_struct"] + expected: FAIL + + [:case="texture_sample"] + expected: FAIL + + [:case="texture_depth"] + expected: FAIL + + [:case="texture_multisampled"] + expected: FAIL + + [:case="texture_storage"] + expected: FAIL + + [:case="sampler"] + expected: FAIL + + [:case="sampler_comparison"] + expected: FAIL + + [:case="ptr"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:different_entry_points:*] + [:a_stage="vertex";b_stage="vertex";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="vertex";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="fragment";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="vertex";b_stage="compute";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="vertex";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="fragment";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="fragment";b_stage="compute";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="vertex";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="fragment";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="storage";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="storage";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="storage";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="storage";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="storage";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="storage";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_2d";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_2d";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_2d";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_2d";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_external";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_external";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_external";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="texture_external";b_kind="uniform";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="uniform";b_kind="texture_3d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="uniform";b_kind="texture_3d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="uniform";b_kind="texture_storage_1d";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="uniform";b_kind="texture_storage_1d";usage="transitive"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="uniform";b_kind="uniform";usage="direct"] + expected: FAIL + + [:a_stage="compute";b_stage="compute";a_kind="uniform";b_kind="uniform";usage="transitive"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_storage_advanced:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,vertex_state:maxVertexAttributesVertexIndexInstanceIndex:*] + [:useVertexIndex=false;useInstanceIndex=false;numAttribsToReserve=0;isAsync=false] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=false;numAttribsToReserve=0;isAsync=true] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=false;numAttribsToReserve=1;isAsync=false] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=false;numAttribsToReserve=1;isAsync=true] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=false;numAttribsToReserve=2;isAsync=false] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=false;numAttribsToReserve=2;isAsync=true] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=true;numAttribsToReserve=0;isAsync=false] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=true;numAttribsToReserve=0;isAsync=true] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=true;numAttribsToReserve=1;isAsync=false] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=true;numAttribsToReserve=1;isAsync=true] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=true;numAttribsToReserve=2;isAsync=false] + expected: FAIL + + [:useVertexIndex=false;useInstanceIndex=true;numAttribsToReserve=2;isAsync=true] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=false;numAttribsToReserve=0;isAsync=false] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=false;numAttribsToReserve=0;isAsync=true] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=false;numAttribsToReserve=1;isAsync=false] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=false;numAttribsToReserve=1;isAsync=true] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=false;numAttribsToReserve=2;isAsync=false] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=false;numAttribsToReserve=2;isAsync=true] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=true;numAttribsToReserve=0;isAsync=false] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=true;numAttribsToReserve=0;isAsync=true] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=true;numAttribsToReserve=1;isAsync=false] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=true;numAttribsToReserve=1;isAsync=true] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=true;numAttribsToReserve=2;isAsync=false] + expected: FAIL + + [:useVertexIndex=true;useInstanceIndex=true;numAttribsToReserve=2;isAsync=true] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,must_use:builtin_must_use:*] + [:call="u32";use=true] + expected: FAIL + + [:call="u32";use=false] + expected: FAIL + + [:call="i32";use=true] + expected: FAIL + + [:call="i32";use=false] + expected: FAIL + + [:call="struct";use=true] + expected: FAIL + + [:call="struct";use=false] + expected: FAIL + + [:call="bitcast";use=true] + expected: FAIL + + [:call="bitcast";use=false] + expected: FAIL + + [:call="all";use=true] + expected: FAIL + + [:call="all";use=false] + expected: FAIL + + [:call="any";use=true] + expected: FAIL + + [:call="any";use=false] + expected: FAIL + + [:call="select";use=true] + expected: FAIL + + [:call="select";use=false] + expected: FAIL + + [:call="arrayLength";use=true] + expected: FAIL + + [:call="arrayLength";use=false] + expected: FAIL + + [:call="abs";use=true] + expected: FAIL + + [:call="abs";use=false] + expected: FAIL + + [:call="acos";use=true] + expected: FAIL + + [:call="acos";use=false] + expected: FAIL + + [:call="acosh";use=true] + expected: FAIL + + [:call="acosh";use=false] + expected: FAIL + + [:call="asin";use=true] + expected: FAIL + + [:call="asin";use=false] + expected: FAIL + + [:call="asinh";use=true] + expected: FAIL + + [:call="asinh";use=false] + expected: FAIL + + [:call="atan";use=true] + expected: FAIL + + [:call="atan";use=false] + expected: FAIL + + [:call="atanh";use=true] + expected: FAIL + + [:call="atanh";use=false] + expected: FAIL + + [:call="atan2";use=true] + expected: FAIL + + [:call="atan2";use=false] + expected: FAIL + + [:call="ceil";use=true] + expected: FAIL + + [:call="ceil";use=false] + expected: FAIL + + [:call="clamp";use=true] + expected: FAIL + + [:call="clamp";use=false] + expected: FAIL + + [:call="cos";use=true] + expected: FAIL + + [:call="cos";use=false] + expected: FAIL + + [:call="cosh";use=true] + expected: FAIL + + [:call="cosh";use=false] + expected: FAIL + + [:call="countLeadingZeros";use=true] + expected: FAIL + + [:call="countLeadingZeros";use=false] + expected: FAIL + + [:call="countOneBits";use=true] + expected: FAIL + + [:call="countOneBits";use=false] + expected: FAIL + + [:call="countTrailingZeros";use=true] + expected: FAIL + + [:call="countTrailingZeros";use=false] + expected: FAIL + + [:call="cross";use=true] + expected: FAIL + + [:call="cross";use=false] + expected: FAIL + + [:call="degrees";use=true] + expected: FAIL + + [:call="degrees";use=false] + expected: FAIL + + [:call="determinant";use=true] + expected: FAIL + + [:call="determinant";use=false] + expected: FAIL + + [:call="distance";use=true] + expected: FAIL + + [:call="distance";use=false] + expected: FAIL + + [:call="dot";use=true] + expected: FAIL + + [:call="dot";use=false] + expected: FAIL + + [:call="exp";use=true] + expected: FAIL + + [:call="exp";use=false] + expected: FAIL + + [:call="exp2";use=true] + expected: FAIL + + [:call="exp2";use=false] + expected: FAIL + + [:call="extractBits";use=true] + expected: FAIL + + [:call="extractBits";use=false] + expected: FAIL + + [:call="faceForward";use=true] + expected: FAIL + + [:call="faceForward";use=false] + expected: FAIL + + [:call="firstLeadingBit";use=true] + expected: FAIL + + [:call="firstLeadingBit";use=false] + expected: FAIL + + [:call="firstTrailingBit";use=true] + expected: FAIL + + [:call="firstTrailingBit";use=false] + expected: FAIL + + [:call="floor";use=true] + expected: FAIL + + [:call="floor";use=false] + expected: FAIL + + [:call="fma";use=true] + expected: FAIL + + [:call="fma";use=false] + expected: FAIL + + [:call="fract";use=true] + expected: FAIL + + [:call="fract";use=false] + expected: FAIL + + [:call="frexp";use=true] + expected: FAIL + + [:call="frexp";use=false] + expected: FAIL + + [:call="insertBits";use=true] + expected: FAIL + + [:call="insertBits";use=false] + expected: FAIL + + [:call="inverseSqrt";use=true] + expected: FAIL + + [:call="inverseSqrt";use=false] + expected: FAIL + + [:call="ldexp";use=true] + expected: FAIL + + [:call="ldexp";use=false] + expected: FAIL + + [:call="length";use=true] + expected: FAIL + + [:call="length";use=false] + expected: FAIL + + [:call="log";use=true] + expected: FAIL + + [:call="log";use=false] + expected: FAIL + + [:call="log2";use=true] + expected: FAIL + + [:call="log2";use=false] + expected: FAIL + + [:call="max";use=true] + expected: FAIL + + [:call="max";use=false] + expected: FAIL + + [:call="min";use=true] + expected: FAIL + + [:call="min";use=false] + expected: FAIL + + [:call="mix";use=true] + expected: FAIL + + [:call="mix";use=false] + expected: FAIL + + [:call="modf";use=true] + expected: FAIL + + [:call="modf";use=false] + expected: FAIL + + [:call="normalize";use=true] + expected: FAIL + + [:call="normalize";use=false] + expected: FAIL + + [:call="pow";use=true] + expected: FAIL + + [:call="pow";use=false] + expected: FAIL + + [:call="quantizeToF16";use=true] + expected: FAIL + + [:call="quantizeToF16";use=false] + expected: FAIL + + [:call="radians";use=true] + expected: FAIL + + [:call="radians";use=false] + expected: FAIL + + [:call="reflect";use=true] + expected: FAIL + + [:call="reflect";use=false] + expected: FAIL + + [:call="refract";use=true] + expected: FAIL + + [:call="refract";use=false] + expected: FAIL + + [:call="reverseBits";use=true] + expected: FAIL + + [:call="reverseBits";use=false] + expected: FAIL + + [:call="round";use=true] + expected: FAIL + + [:call="round";use=false] + expected: FAIL + + [:call="saturate";use=true] + expected: FAIL + + [:call="saturate";use=false] + expected: FAIL + + [:call="sign";use=true] + expected: FAIL + + [:call="sign";use=false] + expected: FAIL + + [:call="sin";use=true] + expected: FAIL + + [:call="sin";use=false] + expected: FAIL + + [:call="sinh";use=true] + expected: FAIL + + [:call="sinh";use=false] + expected: FAIL + + [:call="smoothstep";use=true] + expected: FAIL + + [:call="smoothstep";use=false] + expected: FAIL + + [:call="sqrt";use=true] + expected: FAIL + + [:call="sqrt";use=false] + expected: FAIL + + [:call="step";use=true] + expected: FAIL + + [:call="step";use=false] + expected: FAIL + + [:call="tan";use=true] + expected: FAIL + + [:call="tan";use=false] + expected: FAIL + + [:call="tanh";use=true] + expected: FAIL + + [:call="tanh";use=false] + expected: FAIL + + [:call="transpose";use=true] + expected: FAIL + + [:call="transpose";use=false] + expected: FAIL + + [:call="trunc";use=true] + expected: FAIL + + [:call="trunc";use=false] + expected: FAIL + + [:call="dpdx";use=true] + expected: FAIL + + [:call="dpdx";use=false] + expected: FAIL + + [:call="dpdxCoarse";use=true] + expected: FAIL + + [:call="dpdxCoarse";use=false] + expected: FAIL + + [:call="dpdxFine";use=true] + expected: FAIL + + [:call="dpdxFine";use=false] + expected: FAIL + + [:call="dpdy";use=true] + expected: FAIL + + [:call="dpdy";use=false] + expected: FAIL + + [:call="dpdyCoarse";use=true] + expected: FAIL + + [:call="dpdyCoarse";use=false] + expected: FAIL + + [:call="dpdyFine";use=true] + expected: FAIL + + [:call="dpdyFine";use=false] + expected: FAIL + + [:call="fwidth";use=true] + expected: FAIL + + [:call="fwidth";use=false] + expected: FAIL + + [:call="fwidthCoarse";use=true] + expected: FAIL + + [:call="fwidthCoarse";use=false] + expected: FAIL + + [:call="fwidthFine";use=true] + expected: FAIL + + [:call="fwidthFine";use=false] + expected: FAIL + + [:call="textureDimensions";use=true] + expected: FAIL + + [:call="textureDimensions";use=false] + expected: FAIL + + [:call="textureGather";use=true] + expected: FAIL + + [:call="textureGather";use=false] + expected: FAIL + + [:call="textureGatherCompare";use=true] + expected: FAIL + + [:call="textureGatherCompare";use=false] + expected: FAIL + + [:call="textureLoad";use=true] + expected: FAIL + + [:call="textureLoad";use=false] + expected: FAIL + + [:call="textureNumLayers";use=true] + expected: FAIL + + [:call="textureNumLayers";use=false] + expected: FAIL + + [:call="textureNumLevels";use=true] + expected: FAIL + + [:call="textureNumLevels";use=false] + expected: FAIL + + [:call="textureNumSamples";use=true] + expected: FAIL + + [:call="textureNumSamples";use=false] + expected: FAIL + + [:call="textureSample";use=true] + expected: FAIL + + [:call="textureSample";use=false] + expected: FAIL + + [:call="textureSampleBias";use=true] + expected: FAIL + + [:call="textureSampleBias";use=false] + expected: FAIL + + [:call="textureSampleCompare";use=true] + expected: FAIL + + [:call="textureSampleCompare";use=false] + expected: FAIL + + [:call="textureSampleCompareLevel";use=true] + expected: FAIL + + [:call="textureSampleCompareLevel";use=false] + expected: FAIL + + [:call="textureSampleGrad";use=true] + expected: FAIL + + [:call="textureSampleGrad";use=false] + expected: FAIL + + [:call="textureSampleLevel";use=true] + expected: FAIL + + [:call="textureSampleLevel";use=false] + expected: FAIL + + [:call="textureSampleBaseClampToEdge";use=true] + expected: FAIL + + [:call="textureSampleBaseClampToEdge";use=false] + expected: FAIL + + [:call="pack4x8snorm";use=true] + expected: FAIL + + [:call="pack4x8snorm";use=false] + expected: FAIL + + [:call="pack4x8unorm";use=true] + expected: FAIL + + [:call="pack4x8unorm";use=false] + expected: FAIL + + [:call="pack2x16snorm";use=true] + expected: FAIL + + [:call="pack2x16snorm";use=false] + expected: FAIL + + [:call="pack2x16unorm";use=true] + expected: FAIL + + [:call="pack2x16unorm";use=false] + expected: FAIL + + [:call="pack2x16float";use=true] + expected: FAIL + + [:call="pack2x16float";use=false] + expected: FAIL + + [:call="unpack4x8snorm";use=true] + expected: FAIL + + [:call="unpack4x8snorm";use=false] + expected: FAIL + + [:call="unpack4x8unorm";use=true] + expected: FAIL + + [:call="unpack4x8unorm";use=false] + expected: FAIL + + [:call="unpack2x16snorm";use=true] + expected: FAIL + + [:call="unpack2x16snorm";use=false] + expected: FAIL + + [:call="unpack2x16unorm";use=true] + expected: FAIL + + [:call="unpack2x16unorm";use=false] + expected: FAIL + + [:call="unpack2x16float";use=true] + expected: FAIL + + [:call="unpack2x16float";use=false] + expected: FAIL + + [:call="workgroupUniformLoad";use=true] + expected: FAIL + + [:call="workgroupUniformLoad";use=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:let_ptr_explicit_type_matches_var:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute";ptrStoreType="u32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:struct_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asinh:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:scalar:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan2:integer_argument_x:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_or_assert:*] + [:lhs="any_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cosh:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:api,operation,sampling,filter_mode:mipmapFilter:*] + [:format="r8unorm"] + expected: FAIL + + [:format="rg8unorm"] + expected: FAIL + + [:format="rgba8unorm"] + expected: FAIL + + [:format="rgba8unorm-srgb"] + expected: FAIL + + [:format="bgra8unorm"] + expected: FAIL + + [:format="bgra8unorm-srgb"] + expected: FAIL + + [:format="r16float"] + expected: FAIL + + [:format="rg16float"] + expected: FAIL + + [:format="rgba16float"] + expected: FAIL + + [:format="rgb10a2unorm"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ceil:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:api,operation,sampling,filter_mode:magFilter,nearest:*] + [:format="r8unorm"] + expected: FAIL + + [:format="rg8unorm"] + expected: FAIL + + [:format="rgba8unorm"] + expected: FAIL + + [:format="rgba8unorm-srgb"] + expected: FAIL + + [:format="bgra8unorm"] + expected: FAIL + + [:format="bgra8unorm-srgb"] + expected: FAIL + + [:format="r16float"] + expected: FAIL + + [:format="rg16float"] + expected: FAIL + + [:format="rgba16float"] + expected: FAIL + + [:format="rgb10a2unorm"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,invariant:parsing:*] + [:attr="invariant"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="split_line"] + expected: FAIL + + [:attr="empty_parens"] + expected: FAIL + + [:attr="value"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="duplicate"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,modf:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_attribute_different_location:*] + [:loc="compound";s1="off";s2="info"] + expected: FAIL + + [:loc="compound";s1="off";s2="warning"] + expected: FAIL + + [:loc="compound";s1="off";s2="error"] + expected: FAIL + + [:loc="compound";s1="info";s2="off"] + expected: FAIL + + [:loc="compound";s1="info";s2="warning"] + expected: FAIL + + [:loc="compound";s1="info";s2="error"] + expected: FAIL + + [:loc="compound";s1="warning";s2="off"] + expected: FAIL + + [:loc="compound";s1="warning";s2="info"] + expected: FAIL + + [:loc="compound";s1="warning";s2="error"] + expected: FAIL + + [:loc="compound";s1="error";s2="off"] + expected: FAIL + + [:loc="compound";s1="error";s2="info"] + expected: FAIL + + [:loc="compound";s1="error";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="warning"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,ceil:values:*] + [:stage="constant";type="abstract-float";value=-1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-4.0949166798167684e%2B178] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.577304530685975e%2B146] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-33184418306940492] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.2855213969343918e-16] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-2.8450654510496692e-146] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.0715264747573245e-178] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="abstract-float";value=-5e-324] + expected: FAIL + + [:stage="constant";type="abstract-float";value=0] + expected: FAIL + + [:stage="constant";type="abstract-float";value=5e-324] + expected: FAIL + + [:stage="constant";type="abstract-float";value=5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="abstract-float";value=6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="abstract-float";value=4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.0715264747573244e-178] + expected: FAIL + + [:stage="constant";type="abstract-float";value=2.8450654510496697e-146] + expected: FAIL + + [:stage="constant";type="abstract-float";value=7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="abstract-float";value=5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.2855213969343916e-16] + expected: FAIL + + [:stage="constant";type="abstract-float";value=33184418306940496] + expected: FAIL + + [:stage="constant";type="abstract-float";value=8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="abstract-float";value=2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="abstract-float";value=5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.5773045306859748e%2B146] + expected: FAIL + + [:stage="constant";type="abstract-float";value=4.094916679816769e%2B178] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="abstract-float";value=2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="abstract-float";value=7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="abstract-float";value=1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="f32";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="f32";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="f32";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="f32";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="f32";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="f32";value=-2669923195007533000] + expected: FAIL + + [:stage="constant";type="f32";value=-251846010601472] + expected: FAIL + + [:stage="constant";type="f32";value=-24413495296] + expected: FAIL + + [:stage="constant";type="f32";value=-2207528.25] + expected: FAIL + + [:stage="constant";type="f32";value=-215.5789337158203] + expected: FAIL + + [:stage="constant";type="f32";value=-0.02055920846760273] + expected: FAIL + + [:stage="constant";type="f32";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="f32";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="f32";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="f32";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="f32";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="f32";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="f32";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="f32";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="f32";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="f32";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="f32";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="f32";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="f32";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="f32";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="f32";value=0] + expected: FAIL + + [:stage="constant";type="f32";value=1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="f32";value=2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="f32";value=5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="f32";value=8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="f32";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="f32";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="f32";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="f32";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="f32";value=1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="f32";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="f32";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="f32";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="f32";value=1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="f32";value=0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="f32";value=0.02055920846760273] + expected: FAIL + + [:stage="constant";type="f32";value=215.5789337158203] + expected: FAIL + + [:stage="constant";type="f32";value=2207528.25] + expected: FAIL + + [:stage="constant";type="f32";value=24413495296] + expected: FAIL + + [:stage="constant";type="f32";value=251846010601472] + expected: FAIL + + [:stage="constant";type="f32";value=2669923195007533000] + expected: FAIL + + [:stage="constant";type="f32";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="f32";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="f32";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="f32";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="f32";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-4.0949166798167684e%2B178] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.577304530685975e%2B146] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-33184418306940492] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.2855213969343918e-16] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-2.8450654510496692e-146] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.0715264747573245e-178] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=-5e-324] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=0] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=5e-324] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.0715264747573244e-178] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=2.8450654510496697e-146] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.2855213969343916e-16] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=33184418306940496] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.5773045306859748e%2B146] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=4.094916679816769e%2B178] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E";value=1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-2669923195007533000] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-251846010601472] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-24413495296] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-2207528.25] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-215.5789337158203] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-0.02055920846760273] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=0] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=0.02055920846760273] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=215.5789337158203] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=2207528.25] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=24413495296] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=251846010601472] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=2669923195007533000] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-4.0949166798167684e%2B178] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.577304530685975e%2B146] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-33184418306940492] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.2855213969343918e-16] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-2.8450654510496692e-146] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.0715264747573245e-178] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=-5e-324] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=0] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=5e-324] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.0715264747573244e-178] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=2.8450654510496697e-146] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.2855213969343916e-16] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=33184418306940496] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.5773045306859748e%2B146] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=4.094916679816769e%2B178] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E";value=1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-2669923195007533000] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-251846010601472] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-24413495296] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-2207528.25] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-215.5789337158203] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-0.02055920846760273] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=0] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=0.02055920846760273] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=215.5789337158203] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=2207528.25] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=24413495296] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=251846010601472] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=2669923195007533000] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-4.0949166798167684e%2B178] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.577304530685975e%2B146] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-33184418306940492] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.2855213969343918e-16] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-2.8450654510496692e-146] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.0715264747573245e-178] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=-5e-324] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=0] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=5e-324] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=5.562684646268003e-309] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.1125369292536007e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.668805393880401e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=2.225073858507201e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=2.2250738585072014e-308] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=6.080654739755215e-276] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.603294291171316e-243] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=4.002298034305599e-211] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.0715264747573244e-178] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=2.8450654510496697e-146] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=7.181039640741541e-114] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.8864985793149357e-81] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=5.0416782741949625e-49] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.2855213969343916e-16] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=33184418306940496] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=8.922852101599196e%2B48] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=2.2965349774461225e%2B81] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=5.832533811966288e%2B113] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.5773045306859748e%2B146] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=4.094916679816769e%2B178] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.0243422545120516e%2B211] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=2.7851243441755008e%2B243] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=7.288907451054096e%2B275] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E";value=1.7976931348623157e%2B308] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-2669923195007533000] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-251846010601472] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-24413495296] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-2207528.25] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-215.5789337158203] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-0.02055920846760273] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=0] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.401298464324817e-45] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=2.938735877055719e-39] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=5.877471754111438e-39] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=8.816206229868692e-39] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.428519093203971e-26] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=1.838136587384298e-10] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=0.0000018571550981505425] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=0.02055920846760273] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=215.5789337158203] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=2207528.25] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=24413495296] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=251846010601472] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=2669923195007533000] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="f32";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="f32";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="f32";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="f32";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="f32";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="f32";value=-2669923195007533000] + expected: FAIL + + [:stage="override";type="f32";value=-251846010601472] + expected: FAIL + + [:stage="override";type="f32";value=-24413495296] + expected: FAIL + + [:stage="override";type="f32";value=-2207528.25] + expected: FAIL + + [:stage="override";type="f32";value=-215.5789337158203] + expected: FAIL + + [:stage="override";type="f32";value=-0.02055920846760273] + expected: FAIL + + [:stage="override";type="f32";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="f32";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="f32";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="f32";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="f32";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="f32";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="f32";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="f32";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="f32";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="f32";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="f32";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="f32";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="f32";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="f32";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="f32";value=0] + expected: FAIL + + [:stage="override";type="f32";value=1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="f32";value=2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="f32";value=5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="f32";value=8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="f32";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="f32";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="f32";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="f32";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="f32";value=1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="f32";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="f32";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="f32";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="f32";value=1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="f32";value=0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="f32";value=0.02055920846760273] + expected: FAIL + + [:stage="override";type="f32";value=215.5789337158203] + expected: FAIL + + [:stage="override";type="f32";value=2207528.25] + expected: FAIL + + [:stage="override";type="f32";value=24413495296] + expected: FAIL + + [:stage="override";type="f32";value=251846010601472] + expected: FAIL + + [:stage="override";type="f32";value=2669923195007533000] + expected: FAIL + + [:stage="override";type="f32";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="f32";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="f32";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="f32";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="f32";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-2669923195007533000] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-251846010601472] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-24413495296] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-2207528.25] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-215.5789337158203] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-0.02055920846760273] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=0] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=0.02055920846760273] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=215.5789337158203] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=2207528.25] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=24413495296] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=251846010601472] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=2669923195007533000] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-2669923195007533000] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-251846010601472] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-24413495296] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-2207528.25] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-215.5789337158203] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-0.02055920846760273] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=0] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=0.02055920846760273] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=215.5789337158203] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=2207528.25] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=24413495296] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=251846010601472] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=2669923195007533000] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E";value=3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-3.4028234663852886e%2B38] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-2669923195007533000] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-251846010601472] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-24413495296] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-2207528.25] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-215.5789337158203] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-0.02055920846760273] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=-1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=0] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.401298464324817e-45] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=2.938735877055719e-39] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=5.877471754111438e-39] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=8.816206229868692e-39] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.1754942106924411e-38] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.1754943508222875e-38] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.3177414502693954e-34] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.3701267809399137e-30] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.428519093203971e-26] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.5603237040584277e-22] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.5977715246546182e-18] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.7202612354353872e-14] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=1.838136587384298e-10] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=0.0000018571550981505425] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=0.02055920846760273] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=215.5789337158203] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=2207528.25] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=24413495296] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=251846010601472] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=2669923195007533000] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=2.8831288209688517e%2B22] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=2.9319629499658658e%2B26] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=3.2024852974055647e%2B30] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=3.3886565974372464e%2B34] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E";value=3.4028234663852886e%2B38] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,inverseSqrt:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sqrt:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:aliasing_inside_function:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_param_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:web_platform,copyToTexture,video:copy_from_video:*] + [:videoName="four-colors-vp8-bt601.webm";sourceType="VideoElement";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-vp8-bt601.webm";sourceType="VideoElement";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-vp8-bt601.webm";sourceType="VideoFrame";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-vp8-bt601.webm";sourceType="VideoFrame";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-theora-bt601.ogv";sourceType="VideoElement";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-theora-bt601.ogv";sourceType="VideoElement";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-theora-bt601.ogv";sourceType="VideoFrame";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-theora-bt601.ogv";sourceType="VideoFrame";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-h264-bt601.mp4";sourceType="VideoElement";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-h264-bt601.mp4";sourceType="VideoElement";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-h264-bt601.mp4";sourceType="VideoFrame";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-h264-bt601.mp4";sourceType="VideoFrame";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-vp9-bt601.webm";sourceType="VideoElement";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-vp9-bt601.webm";sourceType="VideoElement";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-vp9-bt601.webm";sourceType="VideoFrame";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-vp9-bt601.webm";sourceType="VideoFrame";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-vp9-bt709.webm";sourceType="VideoElement";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-vp9-bt709.webm";sourceType="VideoElement";srcDoFlipYDuringCopy=false] + expected: FAIL + + [:videoName="four-colors-vp9-bt709.webm";sourceType="VideoFrame";srcDoFlipYDuringCopy=true] + expected: FAIL + + [:videoName="four-colors-vp9-bt709.webm";sourceType="VideoFrame";srcDoFlipYDuringCopy=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:valid_params:*] + [:severity="off";rule="derivative_uniformity";type="attribute"] + expected: FAIL + + [:severity="off";rule="derivative_uniformity";type="directive"] + expected: FAIL + + [:severity="info";rule="derivative_uniformity";type="attribute"] + expected: FAIL + + [:severity="info";rule="derivative_uniformity";type="directive"] + expected: FAIL + + [:severity="warning";rule="derivative_uniformity";type="attribute"] + expected: FAIL + + [:severity="warning";rule="derivative_uniformity";type="directive"] + expected: FAIL + + [:severity="error";rule="derivative_uniformity";type="attribute"] + expected: FAIL + + [:severity="error";rule="derivative_uniformity";type="directive"] + expected: FAIL + + +[cts.https.html?q=webgpu:web_platform,copyToTexture,ImageData:from_ImageData:*] + [:srcDoFlipYDuringCopy=true;dstColorFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_storage_basic:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_directive:*] + [:s1="off";s2="off"] + expected: FAIL + + [:s1="off";s2="info"] + expected: FAIL + + [:s1="off";s2="warning"] + expected: FAIL + + [:s1="off";s2="error"] + expected: FAIL + + [:s1="info";s2="off"] + expected: FAIL + + [:s1="info";s2="info"] + expected: FAIL + + [:s1="info";s2="warning"] + expected: FAIL + + [:s1="info";s2="error"] + expected: FAIL + + [:s1="warning";s2="off"] + expected: FAIL + + [:s1="warning";s2="info"] + expected: FAIL + + [:s1="warning";s2="warning"] + expected: FAIL + + [:s1="warning";s2="error"] + expected: FAIL + + [:s1="error";s2="off"] + expected: FAIL + + [:s1="error";s2="info"] + expected: FAIL + + [:s1="error";s2="warning"] + expected: FAIL + + [:s1="error";s2="error"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_fract:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:f32_nonmatching_vec4:*] + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,unary,af_assignment:abstract:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:write_access:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acosh:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,f32_multiplication:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + [:inputSource="uniform";vectorize=2] + expected: FAIL + + [:inputSource="uniform";vectorize=3] + expected: FAIL + + [:inputSource="uniform";vectorize=4] + expected: FAIL + + [:inputSource="storage_r";vectorize=2] + expected: FAIL + + [:inputSource="storage_r";vectorize=3] + expected: FAIL + + [:inputSource="storage_r";vectorize=4] + expected: FAIL + + [:inputSource="storage_rw";vectorize=2] + expected: FAIL + + [:inputSource="storage_rw";vectorize=3] + expected: FAIL + + [:inputSource="storage_rw";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:alias_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_storage_advanced:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_array_element:*] + [:target="i32"] + expected: FAIL + + [:target="A"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:private_function_scope:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_struct_member_nested_in_alias:*] + [:target="i32"] + expected: FAIL + + [:target="A"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:less_than:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,texture,createTexture:unsupportedTextureViewFormats:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_struct_member:*] + [:target="i32"] + expected: FAIL + + [:target="S"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:read_access:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,exp:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicStore:store_workgroup_advanced:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_storage_advanced:*] + [:workgroupSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;scalarType="i32"] + expected: FAIL + + [:workgroupSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;scalarType="i32"] + expected: FAIL + + [:workgroupSize=128;scalarType="u32"] + expected: FAIL + + [:workgroupSize=128;scalarType="i32"] + expected: FAIL + + [:workgroupSize=256;scalarType="u32"] + expected: FAIL + + [:workgroupSize=256;scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,const:no_direct_recursion:*] + [:target="a"] + expected: FAIL + + [:target="b"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicLoad:load_storage:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:function_pointer_parameters:*] + [:case="pointer_uniform_passthrough_value"] + expected: FAIL + + [:case="pointer_nonuniform_passthrough_value"] + expected: FAIL + + [:case="pointer_store_uniform_value"] + expected: FAIL + + [:case="pointer_store_nonuniform_value"] + expected: FAIL + + [:case="pointer_depends_on_nonpointer_param_uniform"] + expected: FAIL + + [:case="pointer_depends_on_nonpointer_param_nonuniform"] + expected: FAIL + + [:case="pointer_depends_on_pointer_param_uniform"] + expected: FAIL + + [:case="pointer_depends_on_pointer_param_nonuniform"] + expected: FAIL + + [:case="pointer_codependent1"] + expected: FAIL + + [:case="pointer_codependent2"] + expected: FAIL + + [:case="pointer_codependent3"] + expected: FAIL + + [:case="pointer_codependent4"] + expected: FAIL + + [:case="uniform_param_uniform_assignment"] + expected: FAIL + + [:case="uniform_param_nonuniform_assignment"] + expected: FAIL + + [:case="nonuniform_param_uniform_assignment"] + expected: FAIL + + [:case="nonuniform_param_nonuniform_assignment"] + expected: FAIL + + [:case="required_uniform_success"] + expected: FAIL + + [:case="required_uniform_failure"] + expected: FAIL + + [:case="uniform_conditional_call_assign_uniform"] + expected: FAIL + + [:case="uniform_conditional_call_assign_nonuniform1"] + expected: FAIL + + [:case="uniform_conditional_call_assign_nonuniform2"] + expected: FAIL + + [:case="nonuniform_conditional_call_assign_uniform"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:function_variables:*] + [:case="no_assign";init="no_init"] + expected: FAIL + + [:case="no_assign";init="uniform"] + expected: FAIL + + [:case="no_assign";init="nonuniform"] + expected: FAIL + + [:case="simple_uniform";init="no_init"] + expected: FAIL + + [:case="simple_uniform";init="uniform"] + expected: FAIL + + [:case="simple_uniform";init="nonuniform"] + expected: FAIL + + [:case="simple_nonuniform";init="no_init"] + expected: FAIL + + [:case="simple_nonuniform";init="uniform"] + expected: FAIL + + [:case="simple_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="compound_assign_uniform";init="no_init"] + expected: FAIL + + [:case="compound_assign_uniform";init="uniform"] + expected: FAIL + + [:case="compound_assign_uniform";init="nonuniform"] + expected: FAIL + + [:case="compound_assign_nonuniform";init="no_init"] + expected: FAIL + + [:case="compound_assign_nonuniform";init="uniform"] + expected: FAIL + + [:case="compound_assign_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="unreachable_uniform";init="no_init"] + expected: FAIL + + [:case="unreachable_uniform";init="uniform"] + expected: FAIL + + [:case="unreachable_uniform";init="nonuniform"] + expected: FAIL + + [:case="unreachable_nonuniform";init="no_init"] + expected: FAIL + + [:case="unreachable_nonuniform";init="uniform"] + expected: FAIL + + [:case="unreachable_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="if_no_else_uniform";init="no_init"] + expected: FAIL + + [:case="if_no_else_uniform";init="uniform"] + expected: FAIL + + [:case="if_no_else_uniform";init="nonuniform"] + expected: FAIL + + [:case="if_no_else_nonuniform";init="no_init"] + expected: FAIL + + [:case="if_no_else_nonuniform";init="uniform"] + expected: FAIL + + [:case="if_no_else_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="if_no_then_uniform";init="no_init"] + expected: FAIL + + [:case="if_no_then_uniform";init="uniform"] + expected: FAIL + + [:case="if_no_then_uniform";init="nonuniform"] + expected: FAIL + + [:case="if_no_then_nonuniform";init="no_init"] + expected: FAIL + + [:case="if_no_then_nonuniform";init="uniform"] + expected: FAIL + + [:case="if_no_then_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="if_else_uniform";init="no_init"] + expected: FAIL + + [:case="if_else_uniform";init="uniform"] + expected: FAIL + + [:case="if_else_uniform";init="nonuniform"] + expected: FAIL + + [:case="if_else_nonuniform";init="no_init"] + expected: FAIL + + [:case="if_else_nonuniform";init="uniform"] + expected: FAIL + + [:case="if_else_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="if_else_split";init="no_init"] + expected: FAIL + + [:case="if_else_split";init="uniform"] + expected: FAIL + + [:case="if_else_split";init="nonuniform"] + expected: FAIL + + [:case="if_unreachable_else_none";init="no_init"] + expected: FAIL + + [:case="if_unreachable_else_none";init="uniform"] + expected: FAIL + + [:case="if_unreachable_else_none";init="nonuniform"] + expected: FAIL + + [:case="if_unreachable_else_uniform";init="no_init"] + expected: FAIL + + [:case="if_unreachable_else_uniform";init="uniform"] + expected: FAIL + + [:case="if_unreachable_else_uniform";init="nonuniform"] + expected: FAIL + + [:case="if_unreachable_else_nonuniform";init="no_init"] + expected: FAIL + + [:case="if_unreachable_else_nonuniform";init="uniform"] + expected: FAIL + + [:case="if_unreachable_else_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="if_unreachable_then_none";init="no_init"] + expected: FAIL + + [:case="if_unreachable_then_none";init="uniform"] + expected: FAIL + + [:case="if_unreachable_then_none";init="nonuniform"] + expected: FAIL + + [:case="if_unreachable_then_uniform";init="no_init"] + expected: FAIL + + [:case="if_unreachable_then_uniform";init="uniform"] + expected: FAIL + + [:case="if_unreachable_then_uniform";init="nonuniform"] + expected: FAIL + + [:case="if_unreachable_then_nonuniform";init="no_init"] + expected: FAIL + + [:case="if_unreachable_then_nonuniform";init="uniform"] + expected: FAIL + + [:case="if_unreachable_then_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="if_nonescaping_nonuniform";init="no_init"] + expected: FAIL + + [:case="if_nonescaping_nonuniform";init="uniform"] + expected: FAIL + + [:case="if_nonescaping_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="loop_body_depends_on_continuing_uniform";init="no_init"] + expected: FAIL + + [:case="loop_body_depends_on_continuing_uniform";init="uniform"] + expected: FAIL + + [:case="loop_body_depends_on_continuing_uniform";init="nonuniform"] + expected: FAIL + + [:case="loop_body_depends_on_continuing_nonuniform";init="no_init"] + expected: FAIL + + [:case="loop_body_depends_on_continuing_nonuniform";init="uniform"] + expected: FAIL + + [:case="loop_body_depends_on_continuing_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="loop_body_uniform";init="no_init"] + expected: FAIL + + [:case="loop_body_uniform";init="uniform"] + expected: FAIL + + [:case="loop_body_uniform";init="nonuniform"] + expected: FAIL + + [:case="loop_body_nonuniform";init="no_init"] + expected: FAIL + + [:case="loop_body_nonuniform";init="uniform"] + expected: FAIL + + [:case="loop_body_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="loop_body_nonuniform_cond";init="no_init"] + expected: FAIL + + [:case="loop_body_nonuniform_cond";init="uniform"] + expected: FAIL + + [:case="loop_body_nonuniform_cond";init="nonuniform"] + expected: FAIL + + [:case="loop_unreachable_continuing";init="no_init"] + expected: FAIL + + [:case="loop_unreachable_continuing";init="uniform"] + expected: FAIL + + [:case="loop_unreachable_continuing";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_uniform";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_uniform";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_uniform";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_nonuniform";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_nonuniform";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split1";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_split1";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split1";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split2";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_split2";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split2";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split3";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_split3";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split3";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split4";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_split4";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split4";init="nonuniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split5";init="no_init"] + expected: FAIL + + [:case="loop_continuing_from_body_split5";init="uniform"] + expected: FAIL + + [:case="loop_continuing_from_body_split5";init="nonuniform"] + expected: FAIL + + [:case="loop_in_loop_with_continue_uniform";init="no_init"] + expected: FAIL + + [:case="loop_in_loop_with_continue_uniform";init="uniform"] + expected: FAIL + + [:case="loop_in_loop_with_continue_uniform";init="nonuniform"] + expected: FAIL + + [:case="loop_in_loop_with_continue_nonuniform";init="no_init"] + expected: FAIL + + [:case="loop_in_loop_with_continue_nonuniform";init="uniform"] + expected: FAIL + + [:case="loop_in_loop_with_continue_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="after_loop_with_uniform_break_uniform";init="no_init"] + expected: FAIL + + [:case="after_loop_with_uniform_break_uniform";init="uniform"] + expected: FAIL + + [:case="after_loop_with_uniform_break_uniform";init="nonuniform"] + expected: FAIL + + [:case="after_loop_with_uniform_break_nonuniform";init="no_init"] + expected: FAIL + + [:case="after_loop_with_uniform_break_nonuniform";init="uniform"] + expected: FAIL + + [:case="after_loop_with_uniform_break_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="after_loop_with_nonuniform_break";init="no_init"] + expected: FAIL + + [:case="after_loop_with_nonuniform_break";init="uniform"] + expected: FAIL + + [:case="after_loop_with_nonuniform_break";init="nonuniform"] + expected: FAIL + + [:case="after_loop_with_uniform_breaks";init="no_init"] + expected: FAIL + + [:case="after_loop_with_uniform_breaks";init="uniform"] + expected: FAIL + + [:case="after_loop_with_uniform_breaks";init="nonuniform"] + expected: FAIL + + [:case="switch_uniform_case";init="no_init"] + expected: FAIL + + [:case="switch_uniform_case";init="uniform"] + expected: FAIL + + [:case="switch_uniform_case";init="nonuniform"] + expected: FAIL + + [:case="switch_nonuniform_case";init="no_init"] + expected: FAIL + + [:case="switch_nonuniform_case";init="uniform"] + expected: FAIL + + [:case="switch_nonuniform_case";init="nonuniform"] + expected: FAIL + + [:case="after_switch_all_uniform";init="no_init"] + expected: FAIL + + [:case="after_switch_all_uniform";init="uniform"] + expected: FAIL + + [:case="after_switch_all_uniform";init="nonuniform"] + expected: FAIL + + [:case="after_switch_some_assign";init="no_init"] + expected: FAIL + + [:case="after_switch_some_assign";init="uniform"] + expected: FAIL + + [:case="after_switch_some_assign";init="nonuniform"] + expected: FAIL + + [:case="after_switch_nonuniform";init="no_init"] + expected: FAIL + + [:case="after_switch_nonuniform";init="uniform"] + expected: FAIL + + [:case="after_switch_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="after_switch_with_break_nonuniform1";init="no_init"] + expected: FAIL + + [:case="after_switch_with_break_nonuniform1";init="uniform"] + expected: FAIL + + [:case="after_switch_with_break_nonuniform1";init="nonuniform"] + expected: FAIL + + [:case="after_switch_with_break_nonuniform2";init="no_init"] + expected: FAIL + + [:case="after_switch_with_break_nonuniform2";init="uniform"] + expected: FAIL + + [:case="after_switch_with_break_nonuniform2";init="nonuniform"] + expected: FAIL + + [:case="for_loop_uniform_body";init="no_init"] + expected: FAIL + + [:case="for_loop_uniform_body";init="uniform"] + expected: FAIL + + [:case="for_loop_uniform_body";init="nonuniform"] + expected: FAIL + + [:case="for_loop_nonuniform_body";init="no_init"] + expected: FAIL + + [:case="for_loop_nonuniform_body";init="uniform"] + expected: FAIL + + [:case="for_loop_nonuniform_body";init="nonuniform"] + expected: FAIL + + [:case="for_loop_uniform_body_no_condition";init="no_init"] + expected: FAIL + + [:case="for_loop_uniform_body_no_condition";init="uniform"] + expected: FAIL + + [:case="for_loop_uniform_body_no_condition";init="nonuniform"] + expected: FAIL + + [:case="for_loop_nonuniform_body_no_condition";init="no_init"] + expected: FAIL + + [:case="for_loop_nonuniform_body_no_condition";init="uniform"] + expected: FAIL + + [:case="for_loop_nonuniform_body_no_condition";init="nonuniform"] + expected: FAIL + + [:case="for_loop_uniform_increment";init="no_init"] + expected: FAIL + + [:case="for_loop_uniform_increment";init="uniform"] + expected: FAIL + + [:case="for_loop_uniform_increment";init="nonuniform"] + expected: FAIL + + [:case="for_loop_nonuniform_increment";init="no_init"] + expected: FAIL + + [:case="for_loop_nonuniform_increment";init="uniform"] + expected: FAIL + + [:case="for_loop_nonuniform_increment";init="nonuniform"] + expected: FAIL + + [:case="for_loop_uniform_init";init="no_init"] + expected: FAIL + + [:case="for_loop_uniform_init";init="uniform"] + expected: FAIL + + [:case="for_loop_uniform_init";init="nonuniform"] + expected: FAIL + + [:case="for_loop_nonuniform_init";init="no_init"] + expected: FAIL + + [:case="for_loop_nonuniform_init";init="uniform"] + expected: FAIL + + [:case="for_loop_nonuniform_init";init="nonuniform"] + expected: FAIL + + [:case="while_loop_uniform_body";init="no_init"] + expected: FAIL + + [:case="while_loop_uniform_body";init="uniform"] + expected: FAIL + + [:case="while_loop_uniform_body";init="nonuniform"] + expected: FAIL + + [:case="while_loop_nonuniform_body";init="no_init"] + expected: FAIL + + [:case="while_loop_nonuniform_body";init="uniform"] + expected: FAIL + + [:case="while_loop_nonuniform_body";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_uniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_uniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_uniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_nonuniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_nonuniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_all_members_uniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_all_members_uniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_all_members_uniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_all_members_nonuniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_all_members_nonuniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_all_members_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_single_element_struct_uniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_single_element_struct_uniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_single_element_struct_uniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_single_element_struct_nonuniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_single_element_struct_nonuniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_single_element_struct_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_single_element_array_uniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_single_element_array_uniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_single_element_array_uniform";init="nonuniform"] + expected: FAIL + + [:case="partial_assignment_single_element_array_nonuniform";init="no_init"] + expected: FAIL + + [:case="partial_assignment_single_element_array_nonuniform";init="uniform"] + expected: FAIL + + [:case="partial_assignment_single_element_array_nonuniform";init="nonuniform"] + expected: FAIL + + [:case="nested1";init="no_init"] + expected: FAIL + + [:case="nested1";init="uniform"] + expected: FAIL + + [:case="nested1";init="nonuniform"] + expected: FAIL + + [:case="nested2";init="no_init"] + expected: FAIL + + [:case="nested2";init="uniform"] + expected: FAIL + + [:case="nested2";init="nonuniform"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion_via_matrix_element:*] + [:target="f32"] + expected: FAIL + + [:target="M"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cosh:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_const_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,must_use:declaration:*] + [:test="var"] + expected: FAIL + + [:test="function_no_return"] + expected: FAIL + + [:test="function_scalar_return"] + expected: FAIL + + [:test="function_struct_return"] + expected: FAIL + + [:test="function_var"] + expected: FAIL + + [:test="function_call"] + expected: FAIL + + [:test="function_parameter"] + expected: FAIL + + [:test="empty_parameter"] + expected: FAIL + + [:test="parameter"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:let_ptr_writes:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="storage";explicitSpace=true;explicitAccess=true;accessMode="read_write";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute";inferPtrType=false;ptrStoreType="i32"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=true;accessMode="";stage="compute";inferPtrType=true;ptrStoreType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_and_no_assert:*] + [:lhs="any_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,cos:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_struct_attribute:*] + [:target="S1";attribute="align"] + expected: FAIL + + [:target="S1";attribute="location"] + expected: FAIL + + [:target="S1";attribute="size"] + expected: FAIL + + [:target="S2";attribute="align"] + expected: FAIL + + [:target="S2";attribute="location"] + expected: FAIL + + [:target="S2";attribute="size"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:invalid_locations:*] + [:type="attribute";location="module_var"] + expected: FAIL + + [:type="attribute";location="module_const"] + expected: FAIL + + [:type="attribute";location="module_override"] + expected: FAIL + + [:type="attribute";location="struct"] + expected: FAIL + + [:type="attribute";location="struct_member"] + expected: FAIL + + [:type="attribute";location="function_params"] + expected: FAIL + + [:type="attribute";location="function_var"] + expected: FAIL + + [:type="attribute";location="function_let"] + expected: FAIL + + [:type="attribute";location="function_const"] + expected: FAIL + + [:type="attribute";location="pre_else"] + expected: FAIL + + [:type="attribute";location="pre_default"] + expected: FAIL + + [:type="attribute";location="pre_case"] + expected: FAIL + + [:type="attribute";location="pre_continuing"] + expected: FAIL + + [:type="attribute";location="pre_for_params"] + expected: FAIL + + [:type="directive";location="module_var"] + expected: FAIL + + [:type="directive";location="module_const"] + expected: FAIL + + [:type="directive";location="module_override"] + expected: FAIL + + [:type="directive";location="struct"] + expected: FAIL + + [:type="directive";location="struct_member"] + expected: FAIL + + [:type="directive";location="function_params"] + expected: FAIL + + [:type="directive";location="function_var"] + expected: FAIL + + [:type="directive";location="function_let"] + expected: FAIL + + [:type="directive";location="function_const"] + expected: FAIL + + [:type="directive";location="pre_else"] + expected: FAIL + + [:type="directive";location="pre_default"] + expected: FAIL + + [:type="directive";location="pre_case"] + expected: FAIL + + [:type="directive";location="pre_continuing"] + expected: FAIL + + [:type="directive";location="pre_for_params"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_or_no_assert:*] + [:lhs="any_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_logical_and_assert:*] + [:lhs="any_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="any_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="binary_op_eq_const_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_float_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="const_eq_literal_int_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="literal_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="min_max_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_false";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_not_true";rhs="variable_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="any_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="literal_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="min_max_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_false";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_not_true";scope="function"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="module"] + expected: FAIL + + [:lhs="variable_true";rhs="variable_true";scope="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_const:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicExchange:exchange_workgroup_advanced:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_whole:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:function_var_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atan:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:equals:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group:group:*] + [:attr="const_expr"] + expected: FAIL + + [:attr="override_expr"] + expected: FAIL + + [:attr="zero"] + expected: FAIL + + [:attr="one"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="split_line"] + expected: FAIL + + [:attr="trailing_comma"] + expected: FAIL + + [:attr="int_literal"] + expected: FAIL + + [:attr="uint_literal"] + expected: FAIL + + [:attr="hex_literal"] + expected: FAIL + + [:attr="negative"] + expected: FAIL + + [:attr="missing_value"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="multiple_values"] + expected: FAIL + + [:attr="f32_val_literal"] + expected: FAIL + + [:attr="f32_val"] + expected: FAIL + + [:attr="no_params"] + expected: FAIL + + [:attr="misspelling"] + expected: FAIL + + [:attr="multi_group"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:entry_point_call_target:*] + [:stage="%40fragment";entry_point="with"] + expected: FAIL + + [:stage="%40fragment";entry_point="without"] + expected: FAIL + + [:stage="%40vertex";entry_point="with"] + expected: FAIL + + [:stage="%40vertex";entry_point="without"] + expected: FAIL + + [:stage="%40compute%20%40workgroup_size(1,1,1)";entry_point="with"] + expected: FAIL + + [:stage="%40compute%20%40workgroup_size(1,1,1)";entry_point="without"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,id:id:*] + [:attr="zero"] + expected: FAIL + + [:attr="one"] + expected: FAIL + + [:attr="hex"] + expected: FAIL + + [:attr="trailing_comma"] + expected: FAIL + + [:attr="i32"] + expected: FAIL + + [:attr="ui32"] + expected: FAIL + + [:attr="largest"] + expected: FAIL + + [:attr="newline"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="const_expr"] + expected: FAIL + + [:attr="misspelling"] + expected: FAIL + + [:attr="empty"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="multi_value"] + expected: FAIL + + [:attr="overide_expr"] + expected: FAIL + + [:attr="f32_literal"] + expected: FAIL + + [:attr="f32"] + expected: FAIL + + [:attr="negative"] + expected: FAIL + + [:attr="too_large"] + expected: FAIL + + [:attr="no_params"] + expected: FAIL + + [:attr="duplicate"] + expected: FAIL + + +[cts.https.html?q=webgpu:api,validation,capability_checks,limits,maxColorAttachments:validate,kMaxColorAttachmentsToTest:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:single_entry_point:*] + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="vertex";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="fragment";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="storage";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_2d";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="texture_external";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_3d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="texture_storage_1d";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=0;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=0;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=0;b_binding=3;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=0;usage="transitive"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="direct"] + expected: FAIL + + [:stage="compute";a_kind="uniform";b_kind="uniform";a_group=3;b_group=3;a_binding=3;b_binding=3;usage="transitive"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acosh:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group:group_without_binding:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:api,operation,sampling,filter_mode:minFilter,nearest:*] + [:format="r8unorm"] + expected: FAIL + + [:format="rg8unorm"] + expected: FAIL + + [:format="rgba8unorm"] + expected: FAIL + + [:format="rgba8unorm-srgb"] + expected: FAIL + + [:format="bgra8unorm"] + expected: FAIL + + [:format="bgra8unorm-srgb"] + expected: FAIL + + [:format="r16float"] + expected: FAIL + + [:format="rg16float"] + expected: FAIL + + [:format="rgba16float"] + expected: FAIL + + [:format="rgb10a2unorm"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:private_module_scope:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sqrt:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,round:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,sin:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,var_and_let:var_access_mode_bad_other_template_contents:*] + [:accessMode="read";prefix="storage,";suffix=",storage"] + expected: FAIL + + [:accessMode="read";prefix="storage,";suffix=",read"] + expected: FAIL + + [:accessMode="read";prefix="storage,";suffix=","] + expected: FAIL + + [:accessMode="read";prefix="storage,";suffix=""] + expected: FAIL + + [:accessMode="read";prefix="";suffix=",storage"] + expected: FAIL + + [:accessMode="read";prefix="";suffix=",read"] + expected: FAIL + + [:accessMode="read";prefix="";suffix=","] + expected: FAIL + + [:accessMode="read";prefix="";suffix=""] + expected: FAIL + + [:accessMode="read";prefix=",";suffix=",storage"] + expected: FAIL + + [:accessMode="read";prefix=",";suffix=",read"] + expected: FAIL + + [:accessMode="read";prefix=",";suffix=","] + expected: FAIL + + [:accessMode="read";prefix=",";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix="storage,";suffix=",storage"] + expected: FAIL + + [:accessMode="read_write";prefix="storage,";suffix=",read"] + expected: FAIL + + [:accessMode="read_write";prefix="storage,";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix="storage,";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix=",storage"] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix=",read"] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix=",storage"] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix=",read"] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix=""] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,length:vec3:*] + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createComputePipelineAsync:*] + [:valid=true;awaitLost=true] + expected: FAIL + + [:valid=true;awaitLost=false] + expected: FAIL + + [:valid=false;awaitLost=true] + expected: FAIL + + [:valid=false;awaitLost=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log2:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,uniformity,uniformity:pointers:*] + [:case="address_uniform_literal"] + expected: FAIL + + [:case="address_uniform_value"] + expected: FAIL + + [:case="address_nonuniform_value"] + expected: FAIL + + [:case="address_uniform_chain"] + expected: FAIL + + [:case="address_nonuniform_chain1"] + expected: FAIL + + [:case="address_nonuniform_chain2"] + expected: FAIL + + [:case="wg_uniform_load_is_uniform"] + expected: FAIL + + [:case="contents_scalar_uniform1"] + expected: FAIL + + [:case="contents_scalar_uniform2"] + expected: FAIL + + [:case="contents_scalar_uniform3"] + expected: FAIL + + [:case="contents_scalar_nonuniform1"] + expected: FAIL + + [:case="contents_scalar_nonuniform2"] + expected: FAIL + + [:case="contents_scalar_alias_uniform"] + expected: FAIL + + [:case="contents_scalar_alias_nonuniform1"] + expected: FAIL + + [:case="contents_scalar_alias_nonuniform2"] + expected: FAIL + + [:case="contents_scalar_alias_nonuniform3"] + expected: FAIL + + [:case="contents_scalar_alias_nonuniform4"] + expected: FAIL + + [:case="contents_scalar_alias_nonuniform5"] + expected: FAIL + + [:case="contents_array_uniform_index"] + expected: FAIL + + [:case="contents_array_nonuniform_index1"] + expected: FAIL + + [:case="contents_array_nonuniform_index2"] + expected: FAIL + + [:case="contents_array_nonuniform_index3"] + expected: FAIL + + [:case="contents_struct_uniform"] + expected: FAIL + + [:case="contents_struct_nonuniform1"] + expected: FAIL + + [:case="contents_struct_nonuniform2"] + expected: FAIL + + [:case="contents_struct_nonuniform3"] + expected: FAIL + + [:case="contents_struct_chain_uniform"] + expected: FAIL + + [:case="contents_struct_chain_nonuniform1"] + expected: FAIL + + [:case="contents_struct_chain_nonuniform2"] + expected: FAIL + + [:case="contents_struct_chain_nonuniform3"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:conflicting_attribute_same_location:*] + [:loc="function";s1="off";s2="off"] + expected: FAIL + + [:loc="function";s1="off";s2="info"] + expected: FAIL + + [:loc="function";s1="off";s2="warning"] + expected: FAIL + + [:loc="function";s1="off";s2="error"] + expected: FAIL + + [:loc="function";s1="info";s2="off"] + expected: FAIL + + [:loc="function";s1="info";s2="info"] + expected: FAIL + + [:loc="function";s1="info";s2="warning"] + expected: FAIL + + [:loc="function";s1="info";s2="error"] + expected: FAIL + + [:loc="function";s1="warning";s2="off"] + expected: FAIL + + [:loc="function";s1="warning";s2="info"] + expected: FAIL + + [:loc="function";s1="warning";s2="warning"] + expected: FAIL + + [:loc="function";s1="warning";s2="error"] + expected: FAIL + + [:loc="function";s1="error";s2="off"] + expected: FAIL + + [:loc="function";s1="error";s2="info"] + expected: FAIL + + [:loc="function";s1="error";s2="warning"] + expected: FAIL + + [:loc="function";s1="error";s2="error"] + expected: FAIL + + [:loc="compound";s1="off";s2="off"] + expected: FAIL + + [:loc="compound";s1="off";s2="info"] + expected: FAIL + + [:loc="compound";s1="off";s2="warning"] + expected: FAIL + + [:loc="compound";s1="off";s2="error"] + expected: FAIL + + [:loc="compound";s1="info";s2="off"] + expected: FAIL + + [:loc="compound";s1="info";s2="info"] + expected: FAIL + + [:loc="compound";s1="info";s2="warning"] + expected: FAIL + + [:loc="compound";s1="info";s2="error"] + expected: FAIL + + [:loc="compound";s1="warning";s2="off"] + expected: FAIL + + [:loc="compound";s1="warning";s2="info"] + expected: FAIL + + [:loc="compound";s1="warning";s2="warning"] + expected: FAIL + + [:loc="compound";s1="warning";s2="error"] + expected: FAIL + + [:loc="compound";s1="error";s2="off"] + expected: FAIL + + [:loc="compound";s1="error";s2="info"] + expected: FAIL + + [:loc="compound";s1="error";s2="warning"] + expected: FAIL + + [:loc="compound";s1="error";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="if_stmt";s1="error";s2="error"] + expected: FAIL + + [:loc="if_then";s1="off";s2="off"] + expected: FAIL + + [:loc="if_then";s1="off";s2="info"] + expected: FAIL + + [:loc="if_then";s1="off";s2="warning"] + expected: FAIL + + [:loc="if_then";s1="off";s2="error"] + expected: FAIL + + [:loc="if_then";s1="info";s2="off"] + expected: FAIL + + [:loc="if_then";s1="info";s2="info"] + expected: FAIL + + [:loc="if_then";s1="info";s2="warning"] + expected: FAIL + + [:loc="if_then";s1="info";s2="error"] + expected: FAIL + + [:loc="if_then";s1="warning";s2="off"] + expected: FAIL + + [:loc="if_then";s1="warning";s2="info"] + expected: FAIL + + [:loc="if_then";s1="warning";s2="warning"] + expected: FAIL + + [:loc="if_then";s1="warning";s2="error"] + expected: FAIL + + [:loc="if_then";s1="error";s2="off"] + expected: FAIL + + [:loc="if_then";s1="error";s2="info"] + expected: FAIL + + [:loc="if_then";s1="error";s2="warning"] + expected: FAIL + + [:loc="if_then";s1="error";s2="error"] + expected: FAIL + + [:loc="if_else";s1="off";s2="off"] + expected: FAIL + + [:loc="if_else";s1="off";s2="info"] + expected: FAIL + + [:loc="if_else";s1="off";s2="warning"] + expected: FAIL + + [:loc="if_else";s1="off";s2="error"] + expected: FAIL + + [:loc="if_else";s1="info";s2="off"] + expected: FAIL + + [:loc="if_else";s1="info";s2="info"] + expected: FAIL + + [:loc="if_else";s1="info";s2="warning"] + expected: FAIL + + [:loc="if_else";s1="info";s2="error"] + expected: FAIL + + [:loc="if_else";s1="warning";s2="off"] + expected: FAIL + + [:loc="if_else";s1="warning";s2="info"] + expected: FAIL + + [:loc="if_else";s1="warning";s2="warning"] + expected: FAIL + + [:loc="if_else";s1="warning";s2="error"] + expected: FAIL + + [:loc="if_else";s1="error";s2="off"] + expected: FAIL + + [:loc="if_else";s1="error";s2="info"] + expected: FAIL + + [:loc="if_else";s1="error";s2="warning"] + expected: FAIL + + [:loc="if_else";s1="error";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_stmt";s1="error";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_body";s1="error";s2="error"] + expected: FAIL + + [:loc="switch_default";s1="off";s2="off"] + expected: FAIL + + [:loc="switch_default";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_default";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_default";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_default";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_default";s1="info";s2="info"] + expected: FAIL + + [:loc="switch_default";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_default";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_default";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_default";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_default";s1="warning";s2="warning"] + expected: FAIL + + [:loc="switch_default";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_default";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_default";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_default";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_default";s1="error";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="off";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="info";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="warning";s2="error"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="off"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="info"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="warning"] + expected: FAIL + + [:loc="switch_case";s1="error";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="loop_stmt";s1="error";s2="error"] + expected: FAIL + + [:loc="loop_body";s1="off";s2="off"] + expected: FAIL + + [:loc="loop_body";s1="off";s2="info"] + expected: FAIL + + [:loc="loop_body";s1="off";s2="warning"] + expected: FAIL + + [:loc="loop_body";s1="off";s2="error"] + expected: FAIL + + [:loc="loop_body";s1="info";s2="off"] + expected: FAIL + + [:loc="loop_body";s1="info";s2="info"] + expected: FAIL + + [:loc="loop_body";s1="info";s2="warning"] + expected: FAIL + + [:loc="loop_body";s1="info";s2="error"] + expected: FAIL + + [:loc="loop_body";s1="warning";s2="off"] + expected: FAIL + + [:loc="loop_body";s1="warning";s2="info"] + expected: FAIL + + [:loc="loop_body";s1="warning";s2="warning"] + expected: FAIL + + [:loc="loop_body";s1="warning";s2="error"] + expected: FAIL + + [:loc="loop_body";s1="error";s2="off"] + expected: FAIL + + [:loc="loop_body";s1="error";s2="info"] + expected: FAIL + + [:loc="loop_body";s1="error";s2="warning"] + expected: FAIL + + [:loc="loop_body";s1="error";s2="error"] + expected: FAIL + + [:loc="loop_continuing";s1="off";s2="off"] + expected: FAIL + + [:loc="loop_continuing";s1="off";s2="info"] + expected: FAIL + + [:loc="loop_continuing";s1="off";s2="warning"] + expected: FAIL + + [:loc="loop_continuing";s1="off";s2="error"] + expected: FAIL + + [:loc="loop_continuing";s1="info";s2="off"] + expected: FAIL + + [:loc="loop_continuing";s1="info";s2="info"] + expected: FAIL + + [:loc="loop_continuing";s1="info";s2="warning"] + expected: FAIL + + [:loc="loop_continuing";s1="info";s2="error"] + expected: FAIL + + [:loc="loop_continuing";s1="warning";s2="off"] + expected: FAIL + + [:loc="loop_continuing";s1="warning";s2="info"] + expected: FAIL + + [:loc="loop_continuing";s1="warning";s2="warning"] + expected: FAIL + + [:loc="loop_continuing";s1="warning";s2="error"] + expected: FAIL + + [:loc="loop_continuing";s1="error";s2="off"] + expected: FAIL + + [:loc="loop_continuing";s1="error";s2="info"] + expected: FAIL + + [:loc="loop_continuing";s1="error";s2="warning"] + expected: FAIL + + [:loc="loop_continuing";s1="error";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="while_stmt";s1="error";s2="error"] + expected: FAIL + + [:loc="while_body";s1="off";s2="off"] + expected: FAIL + + [:loc="while_body";s1="off";s2="info"] + expected: FAIL + + [:loc="while_body";s1="off";s2="warning"] + expected: FAIL + + [:loc="while_body";s1="off";s2="error"] + expected: FAIL + + [:loc="while_body";s1="info";s2="off"] + expected: FAIL + + [:loc="while_body";s1="info";s2="info"] + expected: FAIL + + [:loc="while_body";s1="info";s2="warning"] + expected: FAIL + + [:loc="while_body";s1="info";s2="error"] + expected: FAIL + + [:loc="while_body";s1="warning";s2="off"] + expected: FAIL + + [:loc="while_body";s1="warning";s2="info"] + expected: FAIL + + [:loc="while_body";s1="warning";s2="warning"] + expected: FAIL + + [:loc="while_body";s1="warning";s2="error"] + expected: FAIL + + [:loc="while_body";s1="error";s2="off"] + expected: FAIL + + [:loc="while_body";s1="error";s2="info"] + expected: FAIL + + [:loc="while_body";s1="error";s2="warning"] + expected: FAIL + + [:loc="while_body";s1="error";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="off";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="info";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="warning";s2="error"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="off"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="info"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="warning"] + expected: FAIL + + [:loc="for_stmt";s1="error";s2="error"] + expected: FAIL + + [:loc="for_body";s1="off";s2="off"] + expected: FAIL + + [:loc="for_body";s1="off";s2="info"] + expected: FAIL + + [:loc="for_body";s1="off";s2="warning"] + expected: FAIL + + [:loc="for_body";s1="off";s2="error"] + expected: FAIL + + [:loc="for_body";s1="info";s2="off"] + expected: FAIL + + [:loc="for_body";s1="info";s2="info"] + expected: FAIL + + [:loc="for_body";s1="info";s2="warning"] + expected: FAIL + + [:loc="for_body";s1="info";s2="error"] + expected: FAIL + + [:loc="for_body";s1="warning";s2="off"] + expected: FAIL + + [:loc="for_body";s1="warning";s2="info"] + expected: FAIL + + [:loc="for_body";s1="warning";s2="warning"] + expected: FAIL + + [:loc="for_body";s1="warning";s2="error"] + expected: FAIL + + [:loc="for_body";s1="error";s2="off"] + expected: FAIL + + [:loc="for_body";s1="error";s2="info"] + expected: FAIL + + [:loc="for_body";s1="error";s2="warning"] + expected: FAIL + + [:loc="for_body";s1="error";s2="error"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,bitcast:bad_type_constructible:*] + [:type="mat2x2f";direction="to"] + expected: FAIL + + [:type="mat2x2f";direction="from"] + expected: FAIL + + [:type="mat2x3f";direction="to"] + expected: FAIL + + [:type="mat2x3f";direction="from"] + expected: FAIL + + [:type="mat2x4f";direction="to"] + expected: FAIL + + [:type="mat2x4f";direction="from"] + expected: FAIL + + [:type="mat3x2f";direction="to"] + expected: FAIL + + [:type="mat3x2f";direction="from"] + expected: FAIL + + [:type="mat3x3f";direction="to"] + expected: FAIL + + [:type="mat3x3f";direction="from"] + expected: FAIL + + [:type="mat3x4f";direction="to"] + expected: FAIL + + [:type="mat3x4f";direction="from"] + expected: FAIL + + [:type="mat4x2f";direction="to"] + expected: FAIL + + [:type="mat4x2f";direction="from"] + expected: FAIL + + [:type="mat4x3f";direction="to"] + expected: FAIL + + [:type="mat4x3f";direction="from"] + expected: FAIL + + [:type="mat4x4f";direction="to"] + expected: FAIL + + [:type="mat4x4f";direction="from"] + expected: FAIL + + [:type="bool";direction="to"] + expected: FAIL + + [:type="bool";direction="from"] + expected: FAIL + + [:type="vec2%3Cbool%3E";direction="to"] + expected: FAIL + + [:type="vec2%3Cbool%3E";direction="from"] + expected: FAIL + + [:type="vec3%3Cbool%3E";direction="to"] + expected: FAIL + + [:type="vec3%3Cbool%3E";direction="from"] + expected: FAIL + + [:type="vec4%3Cbool%3E";direction="to"] + expected: FAIL + + [:type="vec4%3Cbool%3E";direction="from"] + expected: FAIL + + [:type="array%3Ci32,2%3E";direction="to"] + expected: FAIL + + [:type="array%3Ci32,2%3E";direction="from"] + expected: FAIL + + [:type="S";direction="to"] + expected: FAIL + + [:type="S";direction="from"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,fragment_state:colorState:*] + [:caseName="default"] + expected: FAIL + + [:caseName="noBlendTarget0"] + expected: FAIL + + [:caseName="noBlendTarget1"] + expected: FAIL + + [:caseName="colorOperation"] + expected: FAIL + + [:caseName="colorSrcFactor"] + expected: FAIL + + [:caseName="colorDstFactor"] + expected: FAIL + + [:caseName="alphaOperation"] + expected: FAIL + + [:caseName="alphaSrcFactor"] + expected: FAIL + + [:caseName="alphaDstFactor"] + expected: FAIL + + [:caseName="writeMask"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:param_number_matches_call:*] + [:num_args=0;num_params=0] + expected: FAIL + + [:num_args=0;num_params=1] + expected: FAIL + + [:num_args=0;num_params=2] + expected: FAIL + + [:num_args=0;num_params=3] + expected: FAIL + + [:num_args=0;num_params=4] + expected: FAIL + + [:num_args=0;num_params=255] + expected: FAIL + + [:num_args=1;num_params=0] + expected: FAIL + + [:num_args=1;num_params=1] + expected: FAIL + + [:num_args=1;num_params=2] + expected: FAIL + + [:num_args=1;num_params=3] + expected: FAIL + + [:num_args=1;num_params=4] + expected: FAIL + + [:num_args=1;num_params=255] + expected: FAIL + + [:num_args=2;num_params=0] + expected: FAIL + + [:num_args=2;num_params=1] + expected: FAIL + + [:num_args=2;num_params=2] + expected: FAIL + + [:num_args=2;num_params=3] + expected: FAIL + + [:num_args=2;num_params=4] + expected: FAIL + + [:num_args=2;num_params=255] + expected: FAIL + + [:num_args=3;num_params=0] + expected: FAIL + + [:num_args=3;num_params=1] + expected: FAIL + + [:num_args=3;num_params=2] + expected: FAIL + + [:num_args=3;num_params=3] + expected: FAIL + + [:num_args=3;num_params=4] + expected: FAIL + + [:num_args=3;num_params=255] + expected: FAIL + + [:num_args=4;num_params=0] + expected: FAIL + + [:num_args=4;num_params=1] + expected: FAIL + + [:num_args=4;num_params=2] + expected: FAIL + + [:num_args=4;num_params=3] + expected: FAIL + + [:num_args=4;num_params=4] + expected: FAIL + + [:num_args=4;num_params=255] + expected: FAIL + + [:num_args=255;num_params=0] + expected: FAIL + + [:num_args=255;num_params=1] + expected: FAIL + + [:num_args=255;num_params=2] + expected: FAIL + + [:num_args=255;num_params=3] + expected: FAIL + + [:num_args=255;num_params=4] + expected: FAIL + + [:num_args=255;num_params=255] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_comparison:greater_equals:*] + [:inputSource="const";vectorize="_undef_"] + expected: FAIL + + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_workgroup_advanced:*] + [:workgroupSize=1;scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;scalarType="i32"] + expected: FAIL + + [:workgroupSize=4;scalarType="u32"] + expected: FAIL + + [:workgroupSize=4;scalarType="i32"] + expected: FAIL + + [:workgroupSize=8;scalarType="u32"] + expected: FAIL + + [:workgroupSize=8;scalarType="i32"] + expected: FAIL + + [:workgroupSize=16;scalarType="u32"] + expected: FAIL + + [:workgroupSize=16;scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;scalarType="i32"] + expected: FAIL + + [:workgroupSize=128;scalarType="u32"] + expected: FAIL + + [:workgroupSize=128;scalarType="i32"] + expected: FAIL + + [:workgroupSize=256;scalarType="u32"] + expected: FAIL + + [:workgroupSize=256;scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,encoding,programmable,pipeline_bind_group_compat:twoDifferentTextureViews,render_pass,unused:*] + [:encoderType="render%20pass";textureType="regular"] + expected: FAIL + + [:encoderType="render%20pass";textureType="storage"] + expected: FAIL + + [:encoderType="render%20bundle";textureType="regular"] + expected: FAIL + + [:encoderType="render%20bundle";textureType="storage"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tan:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,modf:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:param_names_must_differ:*] + [:p1="a";p2="a"] + expected: FAIL + + [:p1="a";p2="b"] + expected: FAIL + + [:p1="a";p2="c"] + expected: FAIL + + [:p1="b";p2="a"] + expected: FAIL + + [:p1="b";p2="b"] + expected: FAIL + + [:p1="b";p2="c"] + expected: FAIL + + [:p1="c";p2="a"] + expected: FAIL + + [:p1="c";p2="b"] + expected: FAIL + + [:p1="c";p2="c"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,f32_subtraction:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + [:inputSource="uniform";vectorize=2] + expected: FAIL + + [:inputSource="uniform";vectorize=3] + expected: FAIL + + [:inputSource="uniform";vectorize=4] + expected: FAIL + + [:inputSource="storage_r";vectorize=2] + expected: FAIL + + [:inputSource="storage_r";vectorize=3] + expected: FAIL + + [:inputSource="storage_r";vectorize=4] + expected: FAIL + + [:inputSource="storage_rw";vectorize=2] + expected: FAIL + + [:inputSource="storage_rw";vectorize=3] + expected: FAIL + + [:inputSource="storage_rw";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_address_space_never_uses_access_mode:*] + [:addressSpace="uniform";accessMode="read"] + expected: FAIL + + [:addressSpace="uniform";accessMode="write"] + expected: FAIL + + [:addressSpace="uniform";accessMode="read_write"] + expected: FAIL + + [:addressSpace="private";accessMode="read"] + expected: FAIL + + [:addressSpace="private";accessMode="write"] + expected: FAIL + + [:addressSpace="private";accessMode="read_write"] + expected: FAIL + + [:addressSpace="workgroup";accessMode="read"] + expected: FAIL + + [:addressSpace="workgroup";accessMode="write"] + expected: FAIL + + [:addressSpace="workgroup";accessMode="read_write"] + expected: FAIL + + [:addressSpace="function";accessMode="read"] + expected: FAIL + + [:addressSpace="function";accessMode="write"] + expected: FAIL + + [:addressSpace="function";accessMode="read_write"] + expected: FAIL + + [:addressSpace="handle";accessMode="read"] + expected: FAIL + + [:addressSpace="handle";accessMode="write"] + expected: FAIL + + [:addressSpace="handle";accessMode="read_write"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_multiplication:vector_scalar:*] + [:inputSource="const";dim=2] + expected: FAIL + + [:inputSource="const";dim=3] + expected: FAIL + + [:inputSource="const";dim=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_no_assert:*] + [:case="any_false";scope="module"] + expected: FAIL + + [:case="any_false";scope="function"] + expected: FAIL + + [:case="any_true";scope="module"] + expected: FAIL + + [:case="any_true";scope="function"] + expected: FAIL + + [:case="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:case="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:case="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:case="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:case="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:case="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:case="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:case="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:case="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:case="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:case="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:case="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:case="literal_false";scope="module"] + expected: FAIL + + [:case="literal_false";scope="function"] + expected: FAIL + + [:case="literal_not_false";scope="module"] + expected: FAIL + + [:case="literal_not_false";scope="function"] + expected: FAIL + + [:case="literal_not_true";scope="module"] + expected: FAIL + + [:case="literal_not_true";scope="function"] + expected: FAIL + + [:case="literal_true";scope="module"] + expected: FAIL + + [:case="literal_true";scope="function"] + expected: FAIL + + [:case="min_max_false";scope="module"] + expected: FAIL + + [:case="min_max_false";scope="function"] + expected: FAIL + + [:case="min_max_true";scope="module"] + expected: FAIL + + [:case="min_max_true";scope="function"] + expected: FAIL + + [:case="variable_false";scope="module"] + expected: FAIL + + [:case="variable_false";scope="function"] + expected: FAIL + + [:case="variable_not_false";scope="module"] + expected: FAIL + + [:case="variable_not_false";scope="function"] + expected: FAIL + + [:case="variable_not_true";scope="module"] + expected: FAIL + + [:case="variable_not_true";scope="function"] + expected: FAIL + + [:case="variable_true";scope="module"] + expected: FAIL + + [:case="variable_true";scope="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec4_fract:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:warning_unknown_rule:*] + [:type="attribute";rule="unknown"] + expected: FAIL + + [:type="attribute";rule="blahblahblah"] + expected: FAIL + + [:type="attribute";rule="derivative_uniform"] + expected: FAIL + + [:type="directive";rule="unknown"] + expected: FAIL + + [:type="directive";rule="blahblahblah"] + expected: FAIL + + [:type="directive";rule="derivative_uniform"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acos:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,locations:validation:*] + [:attr="zero"] + expected: FAIL + + [:attr="one"] + expected: FAIL + + [:attr="extra_comma"] + expected: FAIL + + [:attr="i32"] + expected: FAIL + + [:attr="u32"] + expected: FAIL + + [:attr="hex"] + expected: FAIL + + [:attr="const_expr"] + expected: FAIL + + [:attr="max"] + expected: FAIL + + [:attr="newline"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="misspelling"] + expected: FAIL + + [:attr="no_parens"] + expected: FAIL + + [:attr="empty_params"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="extra_params"] + expected: FAIL + + [:attr="f32"] + expected: FAIL + + [:attr="f32_literal"] + expected: FAIL + + [:attr="negative"] + expected: FAIL + + [:attr="override_expr"] + expected: FAIL + + [:attr="vec"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_nonmatching_vec2:*] + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + + +[cts.https.html?q=webgpu:web_platform,copyToTexture,image:from_image:*] + [:srcDoFlipYDuringCopy=true;dstColorFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=true;dstColorFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="r32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rg32float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="bgra8unorm-srgb";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgb10a2unorm";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgb10a2unorm";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba16float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba16float";dstPremultiplied=false] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba32float";dstPremultiplied=true] + expected: FAIL + + [:srcDoFlipYDuringCopy=false;dstColorFormat="rgba32float";dstPremultiplied=false] + expected: FAIL + + +[cts.https.html?q=webgpu:api,validation,state,device_lost,destroy:createRenderPipelineAsync:*] + [:valid=true;awaitLost=true] + expected: FAIL + + [:valid=true;awaitLost=false] + expected: FAIL + + [:valid=false;awaitLost=true] + expected: FAIL + + [:valid=false;awaitLost=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,acos:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,unary,af_assignment:f32:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,shader_module:sample_mask:*] + [:entryPoint="fsWithoutSampleMaskUsage"] + expected: FAIL + + [:entryPoint="fsWithSampleMaskUsage"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,access,vector:vector:*] + expected: [OK, TIMEOUT] + [:case="literal_0";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_0u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_1u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_2u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_3u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_0u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_1u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_2u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_3u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_0u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_1u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_2u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="let_3u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_0u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_1u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_2u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="var_3u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_0";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_1";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_trig";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_trig";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_vec2u";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_vec2i";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_array";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_array";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_2_via_struct";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="const_expr_3_via_struct";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="x";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="y";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="z";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="w";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="r";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="g";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="b";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="a";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="zyx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyzw";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwz";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rg";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gr";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgg";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgb";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="grb";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbr";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgba";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="gbra";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xy_yx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyx_xxy";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyz_zyx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxy_rrgg";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rbrg_xyzw";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xyxz_rbg_yx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="wxyz_bga_xy";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xq";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="py";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xg";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="ryb";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xgza";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="xxxxx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rrrrr";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="yxwxy";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="rgbar";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_5";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="literal_minus_1";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="float_idx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="bool_idx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="const";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="let";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="var";vector_width=4;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=2;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=2;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=2;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=2;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=3;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=3;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=3;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=3;element_type="bool"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=4;element_type="i32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=4;element_type="u32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=4;element_type="f32"] + expected: FAIL + + [:case="array_idx";vector_decl="param";vector_width=4;element_type="bool"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,binding:binding:*] + [:attr="const_expr"] + expected: FAIL + + [:attr="override_expr"] + expected: FAIL + + [:attr="zero"] + expected: FAIL + + [:attr="one"] + expected: FAIL + + [:attr="comment"] + expected: FAIL + + [:attr="split_line"] + expected: FAIL + + [:attr="trailing_comma"] + expected: FAIL + + [:attr="int_literal"] + expected: FAIL + + [:attr="uint_literal"] + expected: FAIL + + [:attr="hex_literal"] + expected: FAIL + + [:attr="negative"] + expected: FAIL + + [:attr="missing_value"] + expected: FAIL + + [:attr="missing_left_paren"] + expected: FAIL + + [:attr="missing_right_paren"] + expected: FAIL + + [:attr="multiple_values"] + expected: FAIL + + [:attr="f32_val_literal"] + expected: FAIL + + [:attr="f32_val"] + expected: FAIL + + [:attr="no_params"] + expected: FAIL + + [:attr="misspelling"] + expected: FAIL + + [:attr="multi_binding"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,vector:vector:*] + [:case="vec2_bool"] + expected: FAIL + + [:case="vec3_bool"] + expected: FAIL + + [:case="vec4_bool"] + expected: FAIL + + [:case="vec2_i32"] + expected: FAIL + + [:case="vec3_i32"] + expected: FAIL + + [:case="vec4_i32"] + expected: FAIL + + [:case="vec2_u32"] + expected: FAIL + + [:case="vec3_u32"] + expected: FAIL + + [:case="vec4_u32"] + expected: FAIL + + [:case="vec2_f32"] + expected: FAIL + + [:case="vec3_f32"] + expected: FAIL + + [:case="vec4_f32"] + expected: FAIL + + [:case="vec2i"] + expected: FAIL + + [:case="vec3i"] + expected: FAIL + + [:case="vec4i"] + expected: FAIL + + [:case="vec2u"] + expected: FAIL + + [:case="vec3u"] + expected: FAIL + + [:case="vec4u"] + expected: FAIL + + [:case="vec2f"] + expected: FAIL + + [:case="vec3f"] + expected: FAIL + + [:case="vec4f"] + expected: FAIL + + [:case="trailing_comma"] + expected: FAIL + + [:case="aliased_el_ty"] + expected: FAIL + + [:case="vec"] + expected: FAIL + + [:case="vec_f32"] + expected: FAIL + + [:case="vec1_i32"] + expected: FAIL + + [:case="vec5_u32"] + expected: FAIL + + [:case="missing_el_ty"] + expected: FAIL + + [:case="missing_t_left"] + expected: FAIL + + [:case="missing_t_right"] + expected: FAIL + + [:case="vec_of_array"] + expected: FAIL + + [:case="vec_of_runtime_array"] + expected: FAIL + + [:case="vec_of_struct"] + expected: FAIL + + [:case="vec_of_atomic"] + expected: FAIL + + [:case="vec_of_matrix"] + expected: FAIL + + [:case="vec_of_vec"] + expected: FAIL + + [:case="no_bool_shortform"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,atanh:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,f32_division:vector:*] + [:inputSource="const";vectorize=2] + expected: FAIL + + [:inputSource="const";vectorize=3] + expected: FAIL + + [:inputSource="const";vectorize=4] + expected: FAIL + + [:inputSource="uniform";vectorize=2] + expected: FAIL + + [:inputSource="uniform";vectorize=3] + expected: FAIL + + [:inputSource="uniform";vectorize=4] + expected: FAIL + + [:inputSource="storage_r";vectorize=2] + expected: FAIL + + [:inputSource="storage_r";vectorize=3] + expected: FAIL + + [:inputSource="storage_r";vectorize=4] + expected: FAIL + + [:inputSource="storage_rw";vectorize=2] + expected: FAIL + + [:inputSource="storage_rw";vectorize=3] + expected: FAIL + + [:inputSource="storage_rw";vectorize=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion_via_array_size:*] + [:target="S1"] + expected: FAIL + + [:target="S2"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec4_whole:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,struct:no_indirect_recursion:*] + [:target="i32"] + expected: FAIL + + [:target="S"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,radians:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,identifiers:override_name:*] + [:ident="foo"] + expected: FAIL + + [:ident="Foo"] + expected: FAIL + + [:ident="FOO"] + expected: FAIL + + [:ident="_0"] + expected: FAIL + + [:ident="_foo0"] + expected: FAIL + + [:ident="_0foo"] + expected: FAIL + + [:ident="foo__0"] + expected: FAIL + + [:ident="%CE%94%CE%AD%CE%BB%CF%84%CE%B1"] + expected: FAIL + + [:ident="r%C3%A9flexion"] + expected: FAIL + + [:ident="%D0%9A%D1%8B%D0%B7%D1%8B%D0%BB"] + expected: FAIL + + [:ident="%F0%90%B0%93%F0%90%B0%8F%F0%90%B0%87"] + expected: FAIL + + [:ident="%E6%9C%9D%E7%84%BC%E3%81%91"] + expected: FAIL + + [:ident="%D8%B3%D9%84%D8%A7%D9%85"] + expected: FAIL + + [:ident="%EA%B2%80%EC%A0%95"] + expected: FAIL + + [:ident="%D7%A9%D6%B8%D7%81%D7%9C%D7%95%D6%B9%D7%9D"] + expected: FAIL + + [:ident="%E0%A4%97%E0%A5%81%E0%A4%B2%E0%A4%BE%E0%A4%AC%E0%A5%80"] + expected: FAIL + + [:ident="%D6%83%D5%AB%D6%80%D5%B8%D6%82%D5%A6"] + expected: FAIL + + [:ident="array"] + expected: FAIL + + [:ident="atomic"] + expected: FAIL + + [:ident="bool"] + expected: FAIL + + [:ident="bf16"] + expected: FAIL + + [:ident="bitcast"] + expected: FAIL + + [:ident="f32"] + expected: FAIL + + [:ident="f16"] + expected: FAIL + + [:ident="f64"] + expected: FAIL + + [:ident="i32"] + expected: FAIL + + [:ident="i16"] + expected: FAIL + + [:ident="i64"] + expected: FAIL + + [:ident="i8"] + expected: FAIL + + [:ident="mat2x2"] + expected: FAIL + + [:ident="mat2x3"] + expected: FAIL + + [:ident="mat2x4"] + expected: FAIL + + [:ident="mat3x2"] + expected: FAIL + + [:ident="mat3x3"] + expected: FAIL + + [:ident="mat3x4"] + expected: FAIL + + [:ident="mat4x2"] + expected: FAIL + + [:ident="mat4x3"] + expected: FAIL + + [:ident="mat4x4"] + expected: FAIL + + [:ident="ptr"] + expected: FAIL + + [:ident="quat"] + expected: FAIL + + [:ident="sampler"] + expected: FAIL + + [:ident="sampler_comparison"] + expected: FAIL + + [:ident="signed"] + expected: FAIL + + [:ident="texture_1d"] + expected: FAIL + + [:ident="texture_2d"] + expected: FAIL + + [:ident="texture_2d_array"] + expected: FAIL + + [:ident="texture_3d"] + expected: FAIL + + [:ident="texture_cube"] + expected: FAIL + + [:ident="texture_cube_array"] + expected: FAIL + + [:ident="texture_multisampled_2d"] + expected: FAIL + + [:ident="texture_storage_1d"] + expected: FAIL + + [:ident="texture_storage_2d"] + expected: FAIL + + [:ident="texture_storage_2d_array"] + expected: FAIL + + [:ident="texture_storage_3d"] + expected: FAIL + + [:ident="texture_depth_2d"] + expected: FAIL + + [:ident="texture_depth_2d_array"] + expected: FAIL + + [:ident="texture_depth_cube"] + expected: FAIL + + [:ident="texture_depth_cube_array"] + expected: FAIL + + [:ident="texture_depth_multisampled_2d"] + expected: FAIL + + [:ident="u32"] + expected: FAIL + + [:ident="u16"] + expected: FAIL + + [:ident="u64"] + expected: FAIL + + [:ident="u8"] + expected: FAIL + + [:ident="unsigned"] + expected: FAIL + + [:ident="vec2"] + expected: FAIL + + [:ident="vec3"] + expected: FAIL + + [:ident="vec4"] + expected: FAIL + + [:ident="_"] + expected: FAIL + + [:ident="__"] + expected: FAIL + + [:ident="__foo"] + expected: FAIL + + [:ident="0foo"] + expected: FAIL + + [:ident="foo.bar"] + expected: FAIL + + [:ident="foo-bar"] + expected: FAIL + + [:ident="foo%2Bbar"] + expected: FAIL + + [:ident="foo%23bar"] + expected: FAIL + + [:ident="foo!bar"] + expected: FAIL + + [:ident="foo%5C%5Cbar"] + expected: FAIL + + [:ident="foo%2Fbar"] + expected: FAIL + + [:ident="foo,bar"] + expected: FAIL + + [:ident="foo%40bar"] + expected: FAIL + + [:ident="foo::bar"] + expected: FAIL + + [:ident="alias"] + expected: FAIL + + [:ident="break"] + expected: FAIL + + [:ident="case"] + expected: FAIL + + [:ident="const"] + expected: FAIL + + [:ident="const_assert"] + expected: FAIL + + [:ident="continue"] + expected: FAIL + + [:ident="continuing"] + expected: FAIL + + [:ident="default"] + expected: FAIL + + [:ident="diagnostic"] + expected: FAIL + + [:ident="discard"] + expected: FAIL + + [:ident="else"] + expected: FAIL + + [:ident="enable"] + expected: FAIL + + [:ident="false"] + expected: FAIL + + [:ident="fn"] + expected: FAIL + + [:ident="for"] + expected: FAIL + + [:ident="if"] + expected: FAIL + + [:ident="let"] + expected: FAIL + + [:ident="loop"] + expected: FAIL + + [:ident="override"] + expected: FAIL + + [:ident="requires"] + expected: FAIL + + [:ident="return"] + expected: FAIL + + [:ident="struct"] + expected: FAIL + + [:ident="switch"] + expected: FAIL + + [:ident="true"] + expected: FAIL + + [:ident="var"] + expected: FAIL + + [:ident="while"] + expected: FAIL + + [:ident="NULL"] + expected: FAIL + + [:ident="Self"] + expected: FAIL + + [:ident="abstract"] + expected: FAIL + + [:ident="active"] + expected: FAIL + + [:ident="alignas"] + expected: FAIL + + [:ident="alignof"] + expected: FAIL + + [:ident="as"] + expected: FAIL + + [:ident="asm"] + expected: FAIL + + [:ident="asm_fragment"] + expected: FAIL + + [:ident="async"] + expected: FAIL + + [:ident="attribute"] + expected: FAIL + + [:ident="auto"] + expected: FAIL + + [:ident="await"] + expected: FAIL + + [:ident="become"] + expected: FAIL + + [:ident="binding_array"] + expected: FAIL + + [:ident="cast"] + expected: FAIL + + [:ident="catch"] + expected: FAIL + + [:ident="class"] + expected: FAIL + + [:ident="co_await"] + expected: FAIL + + [:ident="co_return"] + expected: FAIL + + [:ident="co_yield"] + expected: FAIL + + [:ident="coherent"] + expected: FAIL + + [:ident="column_major"] + expected: FAIL + + [:ident="common"] + expected: FAIL + + [:ident="compile"] + expected: FAIL + + [:ident="compile_fragment"] + expected: FAIL + + [:ident="concept"] + expected: FAIL + + [:ident="const_cast"] + expected: FAIL + + [:ident="consteval"] + expected: FAIL + + [:ident="constexpr"] + expected: FAIL + + [:ident="constinit"] + expected: FAIL + + [:ident="crate"] + expected: FAIL + + [:ident="debugger"] + expected: FAIL + + [:ident="decltype"] + expected: FAIL + + [:ident="delete"] + expected: FAIL + + [:ident="demote"] + expected: FAIL + + [:ident="demote_to_helper"] + expected: FAIL + + [:ident="do"] + expected: FAIL + + [:ident="dynamic_cast"] + expected: FAIL + + [:ident="enum"] + expected: FAIL + + [:ident="explicit"] + expected: FAIL + + [:ident="export"] + expected: FAIL + + [:ident="extends"] + expected: FAIL + + [:ident="extern"] + expected: FAIL + + [:ident="external"] + expected: FAIL + + [:ident="fallthrough"] + expected: FAIL + + [:ident="filter"] + expected: FAIL + + [:ident="final"] + expected: FAIL + + [:ident="finally"] + expected: FAIL + + [:ident="friend"] + expected: FAIL + + [:ident="from"] + expected: FAIL + + [:ident="fxgroup"] + expected: FAIL + + [:ident="get"] + expected: FAIL + + [:ident="goto"] + expected: FAIL + + [:ident="groupshared"] + expected: FAIL + + [:ident="highp"] + expected: FAIL + + [:ident="impl"] + expected: FAIL + + [:ident="implements"] + expected: FAIL + + [:ident="import"] + expected: FAIL + + [:ident="inline"] + expected: FAIL + + [:ident="instanceof"] + expected: FAIL + + [:ident="interface"] + expected: FAIL + + [:ident="layout"] + expected: FAIL + + [:ident="lowp"] + expected: FAIL + + [:ident="macro"] + expected: FAIL + + [:ident="macro_rules"] + expected: FAIL + + [:ident="match"] + expected: FAIL + + [:ident="mediump"] + expected: FAIL + + [:ident="meta"] + expected: FAIL + + [:ident="mod"] + expected: FAIL + + [:ident="module"] + expected: FAIL + + [:ident="move"] + expected: FAIL + + [:ident="mut"] + expected: FAIL + + [:ident="mutable"] + expected: FAIL + + [:ident="namespace"] + expected: FAIL + + [:ident="new"] + expected: FAIL + + [:ident="nil"] + expected: FAIL + + [:ident="noexcept"] + expected: FAIL + + [:ident="noinline"] + expected: FAIL + + [:ident="nointerpolation"] + expected: FAIL + + [:ident="noperspective"] + expected: FAIL + + [:ident="null"] + expected: FAIL + + [:ident="nullptr"] + expected: FAIL + + [:ident="of"] + expected: FAIL + + [:ident="operator"] + expected: FAIL + + [:ident="package"] + expected: FAIL + + [:ident="packoffset"] + expected: FAIL + + [:ident="partition"] + expected: FAIL + + [:ident="pass"] + expected: FAIL + + [:ident="patch"] + expected: FAIL + + [:ident="pixelfragment"] + expected: FAIL + + [:ident="precise"] + expected: FAIL + + [:ident="precision"] + expected: FAIL + + [:ident="premerge"] + expected: FAIL + + [:ident="priv"] + expected: FAIL + + [:ident="protected"] + expected: FAIL + + [:ident="pub"] + expected: FAIL + + [:ident="public"] + expected: FAIL + + [:ident="readonly"] + expected: FAIL + + [:ident="ref"] + expected: FAIL + + [:ident="regardless"] + expected: FAIL + + [:ident="register"] + expected: FAIL + + [:ident="reinterpret_cast"] + expected: FAIL + + [:ident="require"] + expected: FAIL + + [:ident="resource"] + expected: FAIL + + [:ident="restrict"] + expected: FAIL + + [:ident="self"] + expected: FAIL + + [:ident="set"] + expected: FAIL + + [:ident="shared"] + expected: FAIL + + [:ident="sizeof"] + expected: FAIL + + [:ident="smooth"] + expected: FAIL + + [:ident="snorm"] + expected: FAIL + + [:ident="static"] + expected: FAIL + + [:ident="static_assert"] + expected: FAIL + + [:ident="static_cast"] + expected: FAIL + + [:ident="std"] + expected: FAIL + + [:ident="subroutine"] + expected: FAIL + + [:ident="super"] + expected: FAIL + + [:ident="target"] + expected: FAIL + + [:ident="template"] + expected: FAIL + + [:ident="this"] + expected: FAIL + + [:ident="thread_local"] + expected: FAIL + + [:ident="throw"] + expected: FAIL + + [:ident="trait"] + expected: FAIL + + [:ident="try"] + expected: FAIL + + [:ident="type"] + expected: FAIL + + [:ident="typedef"] + expected: FAIL + + [:ident="typeid"] + expected: FAIL + + [:ident="typename"] + expected: FAIL + + [:ident="typeof"] + expected: FAIL + + [:ident="union"] + expected: FAIL + + [:ident="unless"] + expected: FAIL + + [:ident="unorm"] + expected: FAIL + + [:ident="unsafe"] + expected: FAIL + + [:ident="unsized"] + expected: FAIL + + [:ident="use"] + expected: FAIL + + [:ident="using"] + expected: FAIL + + [:ident="varying"] + expected: FAIL + + [:ident="virtual"] + expected: FAIL + + [:ident="volatile"] + expected: FAIL + + [:ident="wgsl"] + expected: FAIL + + [:ident="where"] + expected: FAIL + + [:ident="with"] + expected: FAIL + + [:ident="writeonly"] + expected: FAIL + + [:ident="yield"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,struct:no_direct_recursion:*] + [:target="i32"] + expected: FAIL + + [:target="S"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,mix:abstract_float_nonmatching_vec4:*] + [:inputSource="const"] + expected: FAIL + + [:inputSource="uniform"] + expected: FAIL + + [:inputSource="storage_r"] + expected: FAIL + + [:inputSource="storage_rw"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,var_and_let:var_access_mode_bad_template_delim:*] + [:accessMode="read";prefix="";suffix=""] + expected: FAIL + + [:accessMode="read";prefix="";suffix="%3C"] + expected: FAIL + + [:accessMode="read";prefix="";suffix="%3E"] + expected: FAIL + + [:accessMode="read";prefix="";suffix=","] + expected: FAIL + + [:accessMode="read";prefix="%3C";suffix=""] + expected: FAIL + + [:accessMode="read";prefix="%3C";suffix="%3C"] + expected: FAIL + + [:accessMode="read";prefix="%3C";suffix="%3E"] + expected: FAIL + + [:accessMode="read";prefix="%3C";suffix=","] + expected: FAIL + + [:accessMode="read";prefix="%3E";suffix=""] + expected: FAIL + + [:accessMode="read";prefix="%3E";suffix="%3C"] + expected: FAIL + + [:accessMode="read";prefix="%3E";suffix="%3E"] + expected: FAIL + + [:accessMode="read";prefix="%3E";suffix=","] + expected: FAIL + + [:accessMode="read";prefix=",";suffix=""] + expected: FAIL + + [:accessMode="read";prefix=",";suffix="%3C"] + expected: FAIL + + [:accessMode="read";prefix=",";suffix="%3E"] + expected: FAIL + + [:accessMode="read";prefix=",";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix="%3C"] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix="%3E"] + expected: FAIL + + [:accessMode="read_write";prefix="";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix="%3C";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix="%3C";suffix="%3C"] + expected: FAIL + + [:accessMode="read_write";prefix="%3C";suffix="%3E"] + expected: FAIL + + [:accessMode="read_write";prefix="%3C";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix="%3E";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix="%3E";suffix="%3C"] + expected: FAIL + + [:accessMode="read_write";prefix="%3E";suffix="%3E"] + expected: FAIL + + [:accessMode="read_write";prefix="%3E";suffix=","] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix=""] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix="%3C"] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix="%3E"] + expected: FAIL + + [:accessMode="read_write";prefix=",";suffix=","] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,binary,af_subtraction:scalar_vector:*] + [:inputSource="const";dim=2] + expected: FAIL + + [:inputSource="const";dim=3] + expected: FAIL + + [:inputSource="const";dim=4] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,var_access_mode:implicit_access_mode:*] + [:addressSpace="storage";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="uniform";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="private";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="workgroup";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=true;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + [:addressSpace="function";explicitSpace=false;explicitAccess=false;accessMode="";stage="compute"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_indirect_recursion:*] + [:target="i32"] + expected: FAIL + + [:target="S"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,const_assert,const_assert:constant_expression_assert:*] + [:case="any_false";scope="module"] + expected: FAIL + + [:case="any_false";scope="function"] + expected: FAIL + + [:case="any_true";scope="module"] + expected: FAIL + + [:case="any_true";scope="function"] + expected: FAIL + + [:case="binary_op_eq_const_false";scope="module"] + expected: FAIL + + [:case="binary_op_eq_const_false";scope="function"] + expected: FAIL + + [:case="binary_op_eq_const_true";scope="module"] + expected: FAIL + + [:case="binary_op_eq_const_true";scope="function"] + expected: FAIL + + [:case="const_eq_literal_float_false";scope="module"] + expected: FAIL + + [:case="const_eq_literal_float_false";scope="function"] + expected: FAIL + + [:case="const_eq_literal_float_true";scope="module"] + expected: FAIL + + [:case="const_eq_literal_float_true";scope="function"] + expected: FAIL + + [:case="const_eq_literal_int_false";scope="module"] + expected: FAIL + + [:case="const_eq_literal_int_false";scope="function"] + expected: FAIL + + [:case="const_eq_literal_int_true";scope="module"] + expected: FAIL + + [:case="const_eq_literal_int_true";scope="function"] + expected: FAIL + + [:case="literal_false";scope="module"] + expected: FAIL + + [:case="literal_false";scope="function"] + expected: FAIL + + [:case="literal_not_false";scope="module"] + expected: FAIL + + [:case="literal_not_false";scope="function"] + expected: FAIL + + [:case="literal_not_true";scope="module"] + expected: FAIL + + [:case="literal_not_true";scope="function"] + expected: FAIL + + [:case="literal_true";scope="module"] + expected: FAIL + + [:case="literal_true";scope="function"] + expected: FAIL + + [:case="min_max_false";scope="module"] + expected: FAIL + + [:case="min_max_false";scope="function"] + expected: FAIL + + [:case="min_max_true";scope="module"] + expected: FAIL + + [:case="min_max_true";scope="function"] + expected: FAIL + + [:case="variable_false";scope="module"] + expected: FAIL + + [:case="variable_false";scope="function"] + expected: FAIL + + [:case="variable_not_false";scope="module"] + expected: FAIL + + [:case="variable_not_false";scope="function"] + expected: FAIL + + [:case="variable_not_true";scope="module"] + expected: FAIL + + [:case="variable_not_true";scope="function"] + expected: FAIL + + [:case="variable_true";scope="module"] + expected: FAIL + + [:case="variable_true";scope="function"] + expected: FAIL + + +[cts.https.html?q=webgpu:compat,api,validation,encoding,cmds,copyTextureToBuffer:compressed:*] + [:format="bc1-rgba-unorm"] + expected: FAIL + + [:format="bc1-rgba-unorm-srgb"] + expected: FAIL + + [:format="bc2-rgba-unorm"] + expected: FAIL + + [:format="bc2-rgba-unorm-srgb"] + expected: FAIL + + [:format="bc3-rgba-unorm"] + expected: FAIL + + [:format="bc3-rgba-unorm-srgb"] + expected: FAIL + + [:format="bc4-r-unorm"] + expected: FAIL + + [:format="bc4-r-snorm"] + expected: FAIL + + [:format="bc5-rg-unorm"] + expected: FAIL + + [:format="bc5-rg-snorm"] + expected: FAIL + + [:format="bc6h-rgb-ufloat"] + expected: FAIL + + [:format="bc6h-rgb-float"] + expected: FAIL + + [:format="bc7-rgba-unorm"] + expected: FAIL + + [:format="bc7-rgba-unorm-srgb"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:function_scope:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,modf:abstract_vec2_whole:*] + [:inputSource="const"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,ptr_spelling:ptr_handle_space_invalid:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,const:no_indirect_recursion_via_struct_attribute:*] + [:target="a";attribute="align"] + expected: FAIL + + [:target="a";attribute="location"] + expected: FAIL + + [:target="a";attribute="size"] + expected: FAIL + + [:target="b";attribute="align"] + expected: FAIL + + [:target="b";attribute="location"] + expected: FAIL + + [:target="b";attribute="size"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,decl,override:no_direct_recursion:*] + [:target="a"] + expected: FAIL + + [:target="b"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,clamp:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="i32"] + expected: FAIL + + [:stage="constant";type="vec2%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Ci32%3E"] + expected: FAIL + + [:stage="constant";type="u32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cu32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cu32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cu32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="i32"] + expected: FAIL + + [:stage="override";type="vec2%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Ci32%3E"] + expected: FAIL + + [:stage="override";type="u32"] + expected: FAIL + + [:stage="override";type="vec2%3Cu32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cu32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,types,alias:no_direct_recursion:*] + [:target="i32"] + expected: FAIL + + [:target="T"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,parse,diagnostic:valid_locations:*] + [:type="attribute";location="module"] + expected: FAIL + + [:type="attribute";location="function"] + expected: FAIL + + [:type="attribute";location="compound"] + expected: FAIL + + [:type="attribute";location="if_stmt"] + expected: FAIL + + [:type="attribute";location="if_then"] + expected: FAIL + + [:type="attribute";location="if_else"] + expected: FAIL + + [:type="attribute";location="switch_stmt"] + expected: FAIL + + [:type="attribute";location="switch_body"] + expected: FAIL + + [:type="attribute";location="switch_default"] + expected: FAIL + + [:type="attribute";location="switch_case"] + expected: FAIL + + [:type="attribute";location="loop_stmt"] + expected: FAIL + + [:type="attribute";location="loop_body"] + expected: FAIL + + [:type="attribute";location="loop_continuing"] + expected: FAIL + + [:type="attribute";location="while_stmt"] + expected: FAIL + + [:type="attribute";location="while_body"] + expected: FAIL + + [:type="attribute";location="for_stmt"] + expected: FAIL + + [:type="attribute";location="for_body"] + expected: FAIL + + [:type="directive";location="module"] + expected: FAIL + + [:type="directive";location="function"] + expected: FAIL + + [:type="directive";location="compound"] + expected: FAIL + + [:type="directive";location="if_stmt"] + expected: FAIL + + [:type="directive";location="if_then"] + expected: FAIL + + [:type="directive";location="if_else"] + expected: FAIL + + [:type="directive";location="switch_stmt"] + expected: FAIL + + [:type="directive";location="switch_body"] + expected: FAIL + + [:type="directive";location="switch_default"] + expected: FAIL + + [:type="directive";location="switch_case"] + expected: FAIL + + [:type="directive";location="loop_stmt"] + expected: FAIL + + [:type="directive";location="loop_body"] + expected: FAIL + + [:type="directive";location="loop_continuing"] + expected: FAIL + + [:type="directive";location="while_stmt"] + expected: FAIL + + [:type="directive";location="while_body"] + expected: FAIL + + [:type="directive";location="for_stmt"] + expected: FAIL + + [:type="directive";location="for_body"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,restrictions:vertex_returns_position:*] + [:case="bare_position"] + expected: FAIL + + [:case="nested_position"] + expected: FAIL + + [:case="no_bare_position"] + expected: FAIL + + [:case="no_nested_position"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,tan:values:*] + [:stage="constant";type="abstract-float"] + expected: FAIL + + [:stage="constant";type="f32"] + expected: FAIL + + [:stage="constant";type="vec2%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cabstract-float%3E"] + expected: FAIL + + [:stage="constant";type="vec4%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="f32"] + expected: FAIL + + [:stage="override";type="vec2%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec3%3Cf32%3E"] + expected: FAIL + + [:stage="override";type="vec4%3Cf32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,functions,alias_analysis:member_accessors:*] + [:a_use="no_access";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="no_access";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="no_access";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="assign";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="assign";b_use="binary_lhs";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="no_access";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="no_access";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="assign";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="assign";aliased=false] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_lhs";aliased=true] + expected: FAIL + + [:a_use="binary_lhs";b_use="binary_lhs";aliased=false] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,group_and_binding:function_scope_texture:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,shader_io,workgroup_size:workgroup_size_fragment_shader:*] + [:] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,log:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,atomics,atomicCompareExchangeWeak:compare_exchange_weak_workgroup_basic:*] + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=1;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=2;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=32;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=1;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=4;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=8;mapId="remap";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="passthrough";scalarType="i32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="u32"] + expected: FAIL + + [:workgroupSize=64;dispatchSize=16;mapId="remap";scalarType="i32"] + expected: FAIL + + +[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,asin:integer_argument:*] + [:type="f32"] + expected: FAIL + + [:type="i32"] + expected: FAIL + + [:type="vec2%3Ci32%3E"] + expected: FAIL + + [:type="vec3%3Ci32%3E"] + expected: FAIL + + [:type="vec4%3Ci32%3E"] + expected: FAIL + + [:type="u32"] + expected: FAIL + + [:type="vec2%3Cu32%3E"] + expected: FAIL + + [:type="vec3%3Cu32%3E"] + expected: FAIL + + [:type="vec4%3Cu32%3E"] + expected: FAIL diff --git a/tests/wpt/webgpu/tests/checkout_commit.txt b/tests/wpt/webgpu/tests/checkout_commit.txt index ede5c184cdc..5507b2d47d3 100644 --- a/tests/wpt/webgpu/tests/checkout_commit.txt +++ b/tests/wpt/webgpu/tests/checkout_commit.txt @@ -1 +1 @@ -480edec387e8cd5bf5934680050c59a3f7a01438 +f2b59e03621238d0d0fd6305be2c406ce3e45ac2 diff --git a/tests/wpt/webgpu/tests/webgpu/common/framework/fixture.js b/tests/wpt/webgpu/tests/webgpu/common/framework/fixture.js index 1e5f129e6a4..34ea469708f 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/framework/fixture.js +++ b/tests/wpt/webgpu/tests/webgpu/common/framework/fixture.js @@ -159,6 +159,13 @@ export class Fixture { throw new SkipTestCase(msg); } + /** Throws an exception marking the subcase as skipped if condition is true */ + skipIf(cond, msg = '') { + if (cond) { + this.skip(typeof msg === 'function' ? msg() : msg); + } + } + /** Log a warning and increase the result status to "Warn". */ warn(msg) { this.rec.warn(new Error(msg)); diff --git a/tests/wpt/webgpu/tests/webgpu/common/framework/metadata.js b/tests/wpt/webgpu/tests/webgpu/common/framework/metadata.js new file mode 100644 index 00000000000..daa8b4dbca1 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/common/framework/metadata.js @@ -0,0 +1,16 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { assert } from '../util/util.js'; /** Metadata about tests (that can't be derived at runtime). */ + +export function loadMetadataForSuite(suiteDir) { + assert(typeof require !== 'undefined', 'loadMetadataForSuite is only implemented on Node'); + const fs = require('fs'); + + const metadataFile = `${suiteDir}/listing_meta.json`; + if (!fs.existsSync(metadataFile)) { + return null; + } + + const metadata = JSON.parse(fs.readFileSync(metadataFile, 'utf8')); + return metadata; +} diff --git a/tests/wpt/webgpu/tests/webgpu/common/framework/params_builder.js b/tests/wpt/webgpu/tests/webgpu/common/framework/params_builder.js index 787911f9649..63c6431fd2b 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/framework/params_builder.js +++ b/tests/wpt/webgpu/tests/webgpu/common/framework/params_builder.js @@ -1,17 +1,9 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { mergeParams } from '../internal/params_utils.js'; + **/ import { mergeParams, mergeParamsChecked } from '../internal/params_utils.js'; +import { comparePublicParamsPaths, Ordering } from '../internal/query/compare.js'; import { stringifyPublicParams } from '../internal/query/stringify_params.js'; -import { assert, mapLazy } from '../util/util.js'; - -// ================================================================ -// "Public" ParamsBuilder API / Documentation -// ================================================================ - -/** - * Provides doc comments for the methods of CaseParamsBuilder and SubcaseParamsBuilder. - * (Also enforces rough interface match between them.) - */ +import { assert, mapLazy, objectEquals } from '../util/util.js'; /** * Base class for `CaseParamsBuilder` and `SubcaseParamsBuilder`. @@ -29,8 +21,8 @@ export class ParamsBuilderBase { /** * Calls the (normally hidden) `iterateCasesWithSubcases()` method. */ -export function builderIterateCasesWithSubcases(builder) { - return builder.iterateCasesWithSubcases(); +export function builderIterateCasesWithSubcases(builder, caseFilter) { + return builder.iterateCasesWithSubcases(caseFilter); } /** @@ -42,27 +34,61 @@ export function builderIterateCasesWithSubcases(builder) { * This means, for example, that the `unit` passed into `TestBuilder.params()` can be reused. */ export class CaseParamsBuilder extends ParamsBuilderBase { - *iterateCasesWithSubcases() { - for (const a of this.cases()) { - yield [a, undefined]; + *iterateCasesWithSubcases(caseFilter) { + for (const caseP of this.cases(caseFilter)) { + if (caseFilter) { + // this.cases() only filters out cases which conflict with caseFilter. Now that we have + // the final caseP, filter out cases which are missing keys that caseFilter requires. + const ordering = comparePublicParamsPaths(caseP, caseFilter); + if (ordering === Ordering.StrictSuperset || ordering === Ordering.Unordered) { + continue; + } + } + + yield [caseP, undefined]; } } [Symbol.iterator]() { - return this.cases(); + return this.cases(null); } /** @inheritDoc */ expandWithParams(expander) { - const newGenerator = expanderGenerator(this.cases, expander); - return new CaseParamsBuilder(() => newGenerator({})); + const baseGenerator = this.cases; + return new CaseParamsBuilder(function* (caseFilter) { + for (const a of baseGenerator(caseFilter)) { + for (const b of expander(a)) { + if (caseFilter) { + // If the expander generated any key-value pair that conflicts with caseFilter, skip. + const kvPairs = Object.entries(b); + if (kvPairs.some(([k, v]) => k in caseFilter && !objectEquals(caseFilter[k], v))) { + continue; + } + } + + yield mergeParamsChecked(a, b); + } + } + }); } /** @inheritDoc */ expand(key, expander) { - return this.expandWithParams(function* (p) { - for (const value of expander(p)) { - yield { [key]: value }; + const baseGenerator = this.cases; + return new CaseParamsBuilder(function* (caseFilter) { + for (const a of baseGenerator(caseFilter)) { + assert(!(key in a), `New key '${key}' already exists in ${JSON.stringify(a)}`); + + for (const v of expander(a)) { + // If the expander generated a value for this key that conflicts with caseFilter, skip. + if (caseFilter && key in caseFilter) { + if (!objectEquals(caseFilter[key], v)) { + continue; + } + } + yield { ...a, [key]: v }; + } } }); } @@ -89,8 +115,12 @@ export class CaseParamsBuilder extends ParamsBuilderBase { /** @inheritDoc */ filter(pred) { - const newGenerator = filterGenerator(this.cases, pred); - return new CaseParamsBuilder(() => newGenerator({})); + const baseGenerator = this.cases; + return new CaseParamsBuilder(function* (caseFilter) { + for (const a of baseGenerator(caseFilter)) { + if (pred(a)) yield a; + } + }); } /** @inheritDoc */ @@ -104,12 +134,9 @@ export class CaseParamsBuilder extends ParamsBuilderBase { * generate new subcases instead of new cases. */ beginSubcases() { - return new SubcaseParamsBuilder( - () => this.cases(), - function* () { - yield {}; - } - ); + return new SubcaseParamsBuilder(this.cases, function* () { + yield {}; + }); } } @@ -135,8 +162,17 @@ export class SubcaseParamsBuilder extends ParamsBuilderBase { this.subcases = generator; } - *iterateCasesWithSubcases() { - for (const caseP of this.cases()) { + *iterateCasesWithSubcases(caseFilter) { + for (const caseP of this.cases(caseFilter)) { + if (caseFilter) { + // this.cases() only filters out cases which conflict with caseFilter. Now that we have + // the final caseP, filter out cases which are missing keys that caseFilter requires. + const ordering = comparePublicParamsPaths(caseP, caseFilter); + if (ordering === Ordering.StrictSuperset || ordering === Ordering.Unordered) { + continue; + } + } + const subcases = Array.from(this.subcases(caseP)); if (subcases.length) { yield [caseP, subcases]; @@ -146,15 +182,27 @@ export class SubcaseParamsBuilder extends ParamsBuilderBase { /** @inheritDoc */ expandWithParams(expander) { - return new SubcaseParamsBuilder(this.cases, expanderGenerator(this.subcases, expander)); + const baseGenerator = this.subcases; + return new SubcaseParamsBuilder(this.cases, function* (base) { + for (const a of baseGenerator(base)) { + for (const b of expander(mergeParams(base, a))) { + yield mergeParamsChecked(a, b); + } + } + }); } /** @inheritDoc */ expand(key, expander) { - return this.expandWithParams(function* (p) { - for (const value of expander(p)) { - // TypeScript doesn't know here that NewPKey is always a single literal string type. - yield { [key]: value }; + const baseGenerator = this.subcases; + return new SubcaseParamsBuilder(this.cases, function* (base) { + for (const a of baseGenerator(base)) { + const before = mergeParams(base, a); + assert(!(key in before), () => `Key '${key}' already exists in ${JSON.stringify(before)}`); + + for (const v of expander(before)) { + yield { ...a, [key]: v }; + } } }); } @@ -173,7 +221,12 @@ export class SubcaseParamsBuilder extends ParamsBuilderBase { /** @inheritDoc */ filter(pred) { - return new SubcaseParamsBuilder(this.cases, filterGenerator(this.subcases, pred)); + const baseGenerator = this.subcases; + return new SubcaseParamsBuilder(this.cases, function* (base) { + for (const a of baseGenerator(base)) { + if (pred(mergeParams(base, a))) yield a; + } + }); } /** @inheritDoc */ @@ -182,26 +235,6 @@ export class SubcaseParamsBuilder extends ParamsBuilderBase { } } -function expanderGenerator(baseGenerator, expander) { - return function* (base) { - for (const a of baseGenerator(base)) { - for (const b of expander(mergeParams(base, a))) { - yield mergeParams(a, b); - } - } - }; -} - -function filterGenerator(baseGenerator, pred) { - return function* (base) { - for (const a of baseGenerator(base)) { - if (pred(mergeParams(base, a))) { - yield a; - } - } - }; -} - /** Assert an object is not a Generator (a thing returned from a generator function). */ function assertNotGenerator(x) { if ('constructor' in x) { diff --git a/tests/wpt/webgpu/tests/webgpu/common/framework/test_config.js b/tests/wpt/webgpu/tests/webgpu/common/framework/test_config.js index de016471cd2..c9806c7b6c1 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/framework/test_config.js +++ b/tests/wpt/webgpu/tests/webgpu/common/framework/test_config.js @@ -7,4 +7,5 @@ export const globalTestConfig = { testHeartbeatCallback: () => {}, noRaceWithRejectOnTimeout: false, unrollConstEvalLoops: false, + compatibility: false, }; diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/file_loader.js b/tests/wpt/webgpu/tests/webgpu/common/internal/file_loader.js index 6a74dddf789..2420782e78b 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/file_loader.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/file_loader.js @@ -21,17 +21,15 @@ export class TestFileLoader extends EventTarget { return ret; } - async loadTree(query, subqueriesToExpand = []) { - const tree = await loadTreeForQuery( - this, - query, - subqueriesToExpand.map(s => { + async loadTree(query, { subqueriesToExpand = [], maxChunkTime = Infinity } = {}) { + const tree = await loadTreeForQuery(this, query, { + subqueriesToExpand: subqueriesToExpand.map(s => { const q = parseQuery(s); assert(q.level >= 2, () => `subqueriesToExpand entries should not be multi-file:\n ${q}`); return q; - }) - ); - + }), + maxChunkTime, + }); this.dispatchEvent(new MessageEvent('finish')); return tree; } diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/logging/test_case_recorder.js b/tests/wpt/webgpu/tests/webgpu/common/internal/logging/test_case_recorder.js index 3d60563cfb2..8ca5c0d4d64 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/logging/test_case_recorder.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/logging/test_case_recorder.js @@ -20,6 +20,7 @@ const kMinSeverityForStack = LogSeverity.Warn; /** Holds onto a LiveTestCaseResult owned by the Logger, and writes the results into it. */ export class TestCaseRecorder { + nonskippedSubcaseCount = 0; inSubCase = false; subCaseStatus = LogSeverity.Pass; finalCaseStatus = LogSeverity.Pass; @@ -42,12 +43,18 @@ export class TestCaseRecorder { } finish() { - assert(this.startTime >= 0, 'finish() before start()'); + // This is a framework error. If this assert is hit, it won't be localized + // to a test. The whole test run will fail out. + assert(this.startTime >= 0, 'internal error: finish() before start()'); const timeMilliseconds = now() - this.startTime; // Round to next microsecond to avoid storing useless .xxxx00000000000002 in results. this.result.timems = Math.ceil(timeMilliseconds * 1000) / 1000; + if (this.finalCaseStatus === LogSeverity.Skip && this.nonskippedSubcaseCount !== 0) { + this.threw(new Error('internal error: case is "skip" but has nonskipped subcases')); + } + // Convert numeric enum back to string (but expose 'exception' as 'fail') this.result.status = this.finalCaseStatus === LogSeverity.Pass @@ -67,6 +74,9 @@ export class TestCaseRecorder { } endSubCase(expectedStatus) { + if (this.subCaseStatus !== LogSeverity.Skip) { + this.nonskippedSubcaseCount++; + } try { if (expectedStatus === 'fail') { if (this.subCaseStatus <= LogSeverity.Warn) { diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/params_utils.js b/tests/wpt/webgpu/tests/webgpu/common/internal/params_utils.js index 85bb6dbe806..85b002c16ce 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/params_utils.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/params_utils.js @@ -19,8 +19,11 @@ export function extractPublicParams(params) { return publicParams; } +/** Used to escape reserved characters in URIs */ +const kPercent = '%'; + export const badParamValueChars = new RegExp( - '[' + kParamKVSeparator + kParamSeparator + kWildcard + ']' + '[' + kParamKVSeparator + kParamSeparator + kWildcard + kPercent + ']' ); export function publicParamsEquals(x, y) { @@ -50,9 +53,21 @@ function typeAssert() {} } } +/** Merges two objects into one `{ ...a, ...b }` and return it with a flattened type. */ export function mergeParams(a, b) { - for (const key of Object.keys(a)) { - assert(!(key in b), 'Duplicate key: ' + key); - } return { ...a, ...b }; } + +/** + * Merges two objects into one `{ ...a, ...b }` and asserts they had no overlapping keys. + * This is slower than {@link mergeParams}. + */ +export function mergeParamsChecked(a, b) { + const merged = mergeParams(a, b); + assert( + Object.keys(merged).length === Object.keys(a).length + Object.keys(b).length, + () => `Duplicate key between ${JSON.stringify(a)} and ${JSON.stringify(b)}` + ); + + return merged; +} diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/query/json_param_value.js b/tests/wpt/webgpu/tests/webgpu/common/internal/query/json_param_value.js index ddc0994e570..1044a552037 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/query/json_param_value.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/query/json_param_value.js @@ -1,6 +1,6 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { assert, sortObjectByKey } from '../../util/util.js'; + **/ import { assert, sortObjectByKey, isPlainObject } from '../../util/util.js'; // JSON can't represent various values and by default stores them as `null`. // Instead, storing them as a magic string values in JSON. const jsUndefinedMagicValue = '_undef_'; @@ -52,6 +52,17 @@ function stringifyFilter(k, v) { ); } + const isObject = v !== null && typeof v === 'object' && !Array.isArray(v); + if (isObject) { + assert( + isPlainObject(v), + `value must be a plain object but it appears to be a '${ + Object.getPrototypeOf(v).constructor.name + }` + ); + } + assert(typeof v !== 'function', `${v} can not be a function`); + if (Object.is(v, -0)) { return jsNegativeZeroMagicValue; } diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/test_group.js b/tests/wpt/webgpu/tests/webgpu/common/internal/test_group.js index d9c632a47ff..b836c78c612 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/test_group.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/test_group.js @@ -19,6 +19,8 @@ import { import { validQueryPart } from '../internal/query/validQueryPart.js'; import { assert, unreachable } from '../util/util.js'; +import { logToWebsocket } from './websocket_logger.js'; + export function makeTestGroup(fixture) { return new TestGroup(fixture); } @@ -29,6 +31,9 @@ export function makeTestGroupForUnitTesting(fixture) { return new TestGroup(fixture); } +/** Parameter name for batch number (see also TestBuilder.batch). */ +const kBatchParamName = 'batch__'; + export class TestGroup { seen = new Set(); tests = []; @@ -74,6 +79,16 @@ export class TestGroup { test.validate(); } } + + collectNonEmptyTests() { + const testPaths = []; + for (const test of this.tests) { + if (test.computeCaseCount() > 0) { + testPaths.push({ testPath: test.testPath }); + } + } + return testPaths; + } } class TestBuilder { @@ -127,6 +142,7 @@ class TestBuilder { }; } + /** Perform various validation/"lint" chenks. */ validate() { const testPathString = this.testPath.join(kPathSeparator); assert(this.testFn !== undefined, () => { @@ -142,13 +158,18 @@ class TestBuilder { } const seen = new Set(); - for (const [caseParams, subcases] of builderIterateCasesWithSubcases(this.testCases)) { + for (const [caseParams, subcases] of builderIterateCasesWithSubcases(this.testCases, null)) { for (const subcaseParams of subcases ?? [{}]) { const params = mergeParams(caseParams, subcaseParams); - assert(this.batchSize === 0 || !('batch__' in params)); + assert(this.batchSize === 0 || !(kBatchParamName in params)); // stringifyPublicParams also checks for invalid params values - const testcaseString = stringifyPublicParams(params); + let testcaseString; + try { + testcaseString = stringifyPublicParams(params); + } catch (e) { + throw new Error(`${e}: ${testPathString}`); + } // A (hopefully) unique representation of a params value. const testcaseStringUnique = stringifyPublicParamsUniquely(params); @@ -162,6 +183,18 @@ class TestBuilder { } } + computeCaseCount() { + if (this.testCases === undefined) { + return 1; + } + + let caseCount = 0; + for (const [_caseParams, _subcases] of builderIterateCasesWithSubcases(this.testCases, null)) { + caseCount++; + } + return caseCount; + } + params(cases) { assert(this.testCases === undefined, 'test case is already parameterized'); if (cases instanceof Function) { @@ -186,48 +219,69 @@ class TestBuilder { } } - *iterate() { + makeCaseSpecific(params, subcases) { assert(this.testFn !== undefined, 'No test function (.fn()) for test'); + return new RunCaseSpecific( + this.testPath, + params, + this.isUnimplemented, + subcases, + this.fixture, + this.testFn, + this.beforeFn, + this.testCreationStack + ); + } + + *iterate(caseFilter) { this.testCases ??= kUnitCaseParamsBuilder; - for (const [caseParams, subcases] of builderIterateCasesWithSubcases(this.testCases)) { + + // Remove the batch__ from the caseFilter because the params builder doesn't + // know about it (we don't add it until later in this function). + let filterToBatch; + const caseFilterWithoutBatch = caseFilter ? { ...caseFilter } : null; + if (caseFilterWithoutBatch && kBatchParamName in caseFilterWithoutBatch) { + const batchParam = caseFilterWithoutBatch[kBatchParamName]; + assert(typeof batchParam === 'number'); + filterToBatch = batchParam; + delete caseFilterWithoutBatch[kBatchParamName]; + } + + for (const [caseParams, subcases] of builderIterateCasesWithSubcases( + this.testCases, + caseFilterWithoutBatch + )) { + // If batches are not used, yield just one case. if (this.batchSize === 0 || subcases === undefined) { - yield new RunCaseSpecific( - this.testPath, - caseParams, - this.isUnimplemented, - subcases, - this.fixture, - this.testFn, - this.beforeFn, - this.testCreationStack + yield this.makeCaseSpecific(caseParams, subcases); + continue; + } + + // Same if there ends up being only one batch. + const subcaseArray = Array.from(subcases); + if (subcaseArray.length <= this.batchSize) { + yield this.makeCaseSpecific(caseParams, subcaseArray); + continue; + } + + // There are multiple batches. Helper function for this case: + const makeCaseForBatch = batch => { + const sliceStart = batch * this.batchSize; + return this.makeCaseSpecific( + { ...caseParams, [kBatchParamName]: batch }, + subcaseArray.slice(sliceStart, Math.min(subcaseArray.length, sliceStart + this.batchSize)) ); - } else { - const subcaseArray = Array.from(subcases); - if (subcaseArray.length <= this.batchSize) { - yield new RunCaseSpecific( - this.testPath, - caseParams, - this.isUnimplemented, - subcaseArray, - this.fixture, - this.testFn, - this.beforeFn, - this.testCreationStack - ); - } else { - for (let i = 0; i < subcaseArray.length; i = i + this.batchSize) { - yield new RunCaseSpecific( - this.testPath, - { ...caseParams, batch__: i / this.batchSize }, - this.isUnimplemented, - subcaseArray.slice(i, Math.min(subcaseArray.length, i + this.batchSize)), - this.fixture, - this.testFn, - this.beforeFn, - this.testCreationStack - ); - } - } + }; + + // If we filter to just one batch, yield it. + if (filterToBatch !== undefined) { + yield makeCaseForBatch(filterToBatch); + continue; + } + + // Finally, if not, yield all of the batches. + for (let batch = 0; batch * this.batchSize < subcaseArray.length; ++batch) { + yield makeCaseForBatch(batch); } } } @@ -254,6 +308,18 @@ class RunCaseSpecific { this.testCreationStack = testCreationStack; } + computeSubcaseCount() { + if (this.subcases) { + let count = 0; + for (const _subcase of this.subcases) { + count++; + } + return count; + } else { + return 1; + } + } + async runTest(rec, sharedState, params, throwSkip, expectedStatus) { try { rec.beginSubCase(); @@ -276,8 +342,9 @@ class RunCaseSpecific { // or unexpected validation/OOM error from the GPUDevice. if (throwSkip && ex instanceof SkipTestCase) { throw ex; + } else { + rec.threw(ex); } - rec.threw(ex); } finally { try { rec.endSubCase(expectedStatus); @@ -466,6 +533,13 @@ class RunCaseSpecific { rec.threw(ex); } finally { rec.finish(); + + const msg = { + q: selfQuery.toString(), + timems: rec.result.timems, + nonskippedSubcaseCount: rec.nonskippedSubcaseCount, + }; + logToWebsocket(JSON.stringify(msg)); } } } diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/tree.js b/tests/wpt/webgpu/tests/webgpu/common/internal/tree.js index 9c2bf8cb114..0299f354932 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/tree.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/tree.js @@ -1,9 +1,10 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { globalTestConfig } from '../framework/test_config.js'; + **/ import { loadMetadataForSuite } from '../framework/metadata.js'; +import { globalTestConfig } from '../framework/test_config.js'; import { assert, now } from '../util/util.js'; -import { compareQueries, Ordering } from './query/compare.js'; +import { comparePublicParamsPaths, compareQueries, Ordering } from './query/compare.js'; import { TestQueryMultiCase, TestQuerySingleCase, @@ -50,7 +51,6 @@ export class TestTree { constructor(forQuery, root) { this.forQuery = forQuery; - TestTree.propagateCounts(root); this.root = root; assert( root.query.level === 1 && root.query.depthInLevel === 0, @@ -58,6 +58,20 @@ export class TestTree { ); } + static async create(forQuery, root, maxChunkTime) { + const suite = forQuery.suite; + + let chunking = undefined; + if (Number.isFinite(maxChunkTime)) { + const metadata = loadMetadataForSuite(`./src/${suite}`); + assert(metadata !== null, `metadata for ${suite} is missing, but maxChunkTime was requested`); + chunking = { metadata, maxChunkTime }; + } + await TestTree.propagateCounts(root, chunking); + + return new TestTree(forQuery, root); + } + /** * Iterate through the leaves of a version of the tree which has been pruned to exclude * subtrees which: @@ -130,16 +144,48 @@ export class TestTree { } /** Propagate the subtreeTODOs/subtreeTests state upward from leaves to parent nodes. */ - static propagateCounts(subtree) { - subtree.subtreeCounts ??= { tests: 0, nodesWithTODO: 0 }; + static async propagateCounts(subtree, chunking) { + subtree.subtreeCounts ??= { tests: 0, nodesWithTODO: 0, totalTimeMS: 0 }; + subtree.subcaseCount = 0; for (const [, child] of subtree.children) { if ('children' in child) { - const counts = TestTree.propagateCounts(child); + const counts = await TestTree.propagateCounts(child, chunking); subtree.subtreeCounts.tests += counts.tests; subtree.subtreeCounts.nodesWithTODO += counts.nodesWithTODO; + subtree.subtreeCounts.totalTimeMS += counts.totalTimeMS; + subtree.subcaseCount += counts.subcaseCount; + } else { + subtree.subcaseCount = child.subcaseCount; } } - return subtree.subtreeCounts; + + // If we're chunking based on a maxChunkTime, then at each + // TestQueryMultiCase node of the tree we look at its total time. If the + // total time is larger than the maxChunkTime, we set collapsible=false to + // make sure it gets split up in the output. Note: + // - TestQueryMultiTest and higher nodes are never set to collapsible anyway, so we ignore them. + // - TestQuerySingleCase nodes can't be collapsed, so we ignore them. + if (chunking && subtree.query instanceof TestQueryMultiCase) { + const testLevelQuery = new TestQueryMultiCase( + subtree.query.suite, + subtree.query.filePathParts, + subtree.query.testPathParts, + {} + ).toString(); + + const metadata = chunking.metadata; + + const subcaseTiming = metadata[testLevelQuery]?.subcaseMS; + if (subcaseTiming !== undefined) { + const totalTiming = subcaseTiming * subtree.subcaseCount; + subtree.subtreeCounts.totalTimeMS = totalTiming; + if (totalTiming > chunking.maxChunkTime) { + subtree.collapsible = false; + } + } + } + + return { ...subtree.subtreeCounts, subcaseCount: subtree.subcaseCount ?? 0 }; } /** Displays counts in the format `(Nodes with TODOs) / (Total test count)`. */ @@ -171,7 +217,11 @@ export class TestTree { // MAINTENANCE_TODO: Consider having subqueriesToExpand actually impact the depth-order of params // in the tree. -export async function loadTreeForQuery(loader, queryToLoad, subqueriesToExpand) { +export async function loadTreeForQuery( + loader, + queryToLoad, + { subqueriesToExpand, maxChunkTime = Infinity } +) { const suite = queryToLoad.suite; const specs = await loader.listing(suite); @@ -283,24 +333,29 @@ export async function loadTreeForQuery(loader, queryToLoad, subqueriesToExpand) ); // This is 1 test. Set tests=1 then count TODOs. - subtreeL2.subtreeCounts ??= { tests: 1, nodesWithTODO: 0 }; + subtreeL2.subtreeCounts ??= { tests: 1, nodesWithTODO: 0, totalTimeMS: 0 }; if (t.description) setSubtreeDescriptionAndCountTODOs(subtreeL2, t.description); + let caseFilter = null; + if ('params' in queryToLoad) { + caseFilter = queryToLoad.params; + } + // MAINTENANCE_TODO: If tree generation gets too slow, avoid actually iterating the cases in a // file if there's no need to (based on the subqueriesToExpand). - for (const c of t.iterate()) { - { - const queryL3 = new TestQuerySingleCase(suite, entry.file, c.id.test, c.id.params); - const orderingL3 = compareQueries(queryL3, queryToLoad); - if (orderingL3 === Ordering.Unordered || orderingL3 === Ordering.StrictSuperset) { - // Case is not matched by this query. + for (const c of t.iterate(caseFilter)) { + // iterate() guarantees c's query is equal to or a subset of queryToLoad. + + if (queryToLoad instanceof TestQuerySingleCase) { + // A subset is OK if it's TestQueryMultiCase, but for SingleCase it must match exactly. + const ordering = comparePublicParamsPaths(c.id.params, queryToLoad.params); + if (ordering !== Ordering.Equal) { continue; } } // Leaf for case is suite:a,b:c,d:x=1;y=2 addLeafForCase(subtreeL2, c, isCollapsible); - foundCase = true; } } @@ -322,13 +377,13 @@ export async function loadTreeForQuery(loader, queryToLoad, subqueriesToExpand) } assert(foundCase, `Query \`${queryToLoad.toString()}\` does not match any cases`); - return new TestTree(queryToLoad, subtreeL0); + return TestTree.create(queryToLoad, subtreeL0, maxChunkTime); } function setSubtreeDescriptionAndCountTODOs(subtree, description) { assert(subtree.description === undefined); subtree.description = description.trim(); - subtree.subtreeCounts ??= { tests: 0, nodesWithTODO: 0 }; + subtree.subtreeCounts ??= { tests: 0, nodesWithTODO: 0, totalTimeMS: 0 }; if (subtree.description.indexOf('TODO') !== -1) { subtree.subtreeCounts.nodesWithTODO++; } @@ -477,6 +532,7 @@ function insertLeaf(parent, query, t) { query, run: (rec, expectations) => t.run(rec, query, expectations || []), isUnimplemented: t.isUnimplemented, + subcaseCount: t.computeSubcaseCount(), }; // This is a leaf (e.g. s:f:t:x=1;* -> s:f:t:x=1). The key is always ''. diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/version.js b/tests/wpt/webgpu/tests/webgpu/common/internal/version.js index 2d205096c7c..0cbad1c61d2 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/internal/version.js +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/version.js @@ -1,3 +1,3 @@ // AUTO-GENERATED - DO NOT EDIT. See tools/gen_version. -export const version = '480edec387e8cd5bf5934680050c59a3f7a01438'; +export const version = 'f2b59e03621238d0d0fd6305be2c406ce3e45ac2'; diff --git a/tests/wpt/webgpu/tests/webgpu/common/internal/websocket_logger.js b/tests/wpt/webgpu/tests/webgpu/common/internal/websocket_logger.js new file mode 100644 index 00000000000..1f60801f5c6 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/common/internal/websocket_logger.js @@ -0,0 +1,52 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ /** + * - 'uninitialized' means we haven't tried to connect yet + * - Promise means it's pending + * - 'failed' means it failed (this is the most common case, where the logger isn't running) + * - WebSocket means it succeeded + */ let connection = 'uninitialized'; + +/** + * Log a string to a websocket at `localhost:59497`. See `tools/websocket-logger`. + * + * This does nothing if a connection couldn't be established on the first call. + */ +export function logToWebsocket(msg) { + if (connection === 'failed') { + return; + } + + if (connection === 'uninitialized') { + connection = new Promise(resolve => { + if (typeof WebSocket === 'undefined') { + resolve('failed'); + return; + } + + const ws = new WebSocket('ws://localhost:59497/optional_cts_websocket_logger'); + ws.onopen = () => { + resolve(ws); + }; + ws.onerror = () => { + connection = 'failed'; + resolve('failed'); + }; + ws.onclose = () => { + connection = 'failed'; + resolve('failed'); + }; + }); + void connection.then(resolved => { + connection = resolved; + }); + } + + void (async () => { + // connection may be a promise or a value here. Either is OK to await. + const ws = await connection; + if (ws !== 'failed') { + ws.send(msg); + } + })(); +} diff --git a/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/options.js b/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/options.js index 946c0bdc119..953c3280fd4 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/options.js +++ b/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/options.js @@ -16,3 +16,83 @@ export function optionEnabled(opt, searchParams = getWindowURL().searchParams) { export function optionString(opt, searchParams = getWindowURL().searchParams) { return searchParams.get(opt) || ''; } + +/** + * The possible options for the tests. + */ + +export const kDefaultCTSOptions = { + worker: false, + debug: true, + compatibility: false, + unrollConstEvalLoops: false, + powerPreference: '', +}; + +/** + * Extra per option info. + */ + +/** + * Options to the CTS. + */ +export const kCTSOptionsInfo = { + worker: { description: 'run in a worker' }, + debug: { description: 'show more info' }, + compatibility: { description: 'run in compatibility mode' }, + unrollConstEvalLoops: { description: 'unroll const eval loops in WGSL' }, + powerPreference: { + description: 'set default powerPreference for some tests', + parser: optionString, + selectValueDescriptions: [ + { value: '', description: 'default' }, + { value: 'low-power', description: 'low-power' }, + { value: 'high-performance', description: 'high-performance' }, + ], + }, +}; + +/** + * Converts camel case to snake case. + * Examples: + * fooBar -> foo_bar + * parseHTMLFile -> parse_html_file + */ +export function camelCaseToSnakeCase(id) { + return id + .replace(/(.)([A-Z][a-z]+)/g, '$1_$2') + .replace(/([a-z0-9])([A-Z])/g, '$1_$2') + .toLowerCase(); +} + +/** + * Creates a Options from search parameters. + */ +function getOptionsInfoFromSearchString(optionsInfos, searchString) { + const searchParams = new URLSearchParams(searchString); + const optionValues = {}; + for (const [optionName, info] of Object.entries(optionsInfos)) { + const parser = info.parser || optionEnabled; + optionValues[optionName] = parser(camelCaseToSnakeCase(optionName), searchParams); + } + return optionValues; +} + +/** + * Given a test query string in the form of `suite:foo,bar,moo&opt1=val1&opt2=val2 + * returns the query and the options. + */ +export function parseSearchParamLikeWithOptions(optionsInfos, query) { + const searchString = query.includes('q=') || query.startsWith('?') ? query : `q=${query}`; + const queries = new URLSearchParams(searchString).getAll('q'); + const options = getOptionsInfoFromSearchString(optionsInfos, searchString); + return { queries, options }; +} + +/** + * Given a test query string in the form of `suite:foo,bar,moo&opt1=val1&opt2=val2 + * returns the query and the common options. + */ +export function parseSearchParamLikeWithCTSOptions(query) { + return parseSearchParamLikeWithOptions(kCTSOptionsInfo, query); +} diff --git a/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker-worker.js b/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker-worker.js index 5b490252fdf..e8b40222a51 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker-worker.js +++ b/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker-worker.js @@ -1,6 +1,7 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { setBaseResourcePath } from '../../framework/resources.js'; +import { globalTestConfig } from '../../framework/test_config.js'; import { DefaultTestFileLoader } from '../../internal/file_loader.js'; import { Logger } from '../../internal/logging/logger.js'; import { parseQuery } from '../../internal/query/parseQuery.js'; @@ -8,8 +9,6 @@ import { parseQuery } from '../../internal/query/parseQuery.js'; import { setDefaultRequestAdapterOptions } from '../../util/navigator_gpu.js'; import { assert } from '../../util/util.js'; -// Should be DedicatedWorkerGlobalScope, but importing lib "webworker" conflicts with lib "dom". - const loader = new DefaultTestFileLoader(); setBaseResourcePath('../../../resources'); @@ -17,14 +16,23 @@ setBaseResourcePath('../../../resources'); self.onmessage = async ev => { const query = ev.data.query; const expectations = ev.data.expectations; - const defaultRequestAdapterOptions = ev.data.defaultRequestAdapterOptions; - const debug = ev.data.debug; + const ctsOptions = ev.data.ctsOptions; - setDefaultRequestAdapterOptions(defaultRequestAdapterOptions); + const { debug, unrollConstEvalLoops, powerPreference, compatibility } = ctsOptions; + globalTestConfig.unrollConstEvalLoops = unrollConstEvalLoops; + globalTestConfig.compatibility = compatibility; Logger.globalDebugMode = debug; const log = new Logger(); + if (powerPreference || compatibility) { + setDefaultRequestAdapterOptions({ + ...(powerPreference && { powerPreference }), + // MAINTENANCE_TODO: Change this to whatever the option ends up being + ...(compatibility && { compatibilityMode: true }), + }); + } + const testcases = Array.from(await loader.loadCases(parseQuery(query))); assert(testcases.length === 1, 'worker query resulted in != 1 cases'); diff --git a/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker.js b/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker.js index c56339ab97e..092d4ee88bc 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker.js +++ b/tests/wpt/webgpu/tests/webgpu/common/runtime/helper/test_worker.js @@ -2,14 +2,13 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { LogMessageWithStack } from '../../internal/logging/log_message.js'; -import { getDefaultRequestAdapterOptions } from '../../util/navigator_gpu.js'; +import { kDefaultCTSOptions } from './options.js'; export class TestWorker { resolvers = new Map(); - constructor(debug) { - this.debug = debug; - + constructor(ctsOptions) { + this.ctsOptions = { ...(ctsOptions || kDefaultCTSOptions), ...{ worker: true } }; const selfPath = import.meta.url; const selfPathDir = selfPath.substring(0, selfPath.lastIndexOf('/')); const workerPath = selfPathDir + '/test_worker-worker.js'; @@ -33,8 +32,7 @@ export class TestWorker { this.worker.postMessage({ query, expectations, - debug: this.debug, - defaultRequestAdapterOptions: getDefaultRequestAdapterOptions(), + ctsOptions: this.ctsOptions, }); const workerResult = await new Promise(resolve => { this.resolvers.set(query, resolve); diff --git a/tests/wpt/webgpu/tests/webgpu/common/runtime/wpt.js b/tests/wpt/webgpu/tests/webgpu/common/runtime/wpt.js index 90294223c09..a66f852194d 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/runtime/wpt.js +++ b/tests/wpt/webgpu/tests/webgpu/common/runtime/wpt.js @@ -22,7 +22,7 @@ setup({ void (async () => { const workerEnabled = optionEnabled('worker'); - const worker = workerEnabled ? new TestWorker(false) : undefined; + const worker = workerEnabled ? new TestWorker() : undefined; globalTestConfig.unrollConstEvalLoops = optionEnabled('unroll_const_eval_loops'); diff --git a/tests/wpt/webgpu/tests/webgpu/common/util/data_tables.js b/tests/wpt/webgpu/tests/webgpu/common/util/data_tables.js index c5d21d40017..f2c9176ff4d 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/util/data_tables.js +++ b/tests/wpt/webgpu/tests/webgpu/common/util/data_tables.js @@ -10,6 +10,20 @@ export function numericKeysOf(obj) { return Object.keys(obj).map(n => Number(n)); } +/** + * @returns a new Record from @p objects, using the string returned by Object.toString() as the keys + * and the objects as the values. + */ +export function objectsToRecord(objects) { + const record = {}; + return objects.reduce((obj, type) => { + return { + ...obj, + [type.toString()]: type, + }; + }, record); +} + /** * Creates an info lookup object from a more nicely-formatted table. See below for examples. * @@ -27,3 +41,67 @@ export function makeTable(members, defaults, table) { return result; } + +/** + * Creates an info lookup object from a more nicely-formatted table. + * + * Note: Using `as const` on the arguments to this function is necessary to infer the correct type. + * + * Example: + * + * ``` + * const t = makeTableWithDefaults( + * { c: 'default' }, // columnRenames + * ['a', 'default', 'd'], // columnsKept + * ['a', 'b', 'c', 'd'], // columns + * [123, 456, 789, 1011], // defaults + * { // table + * foo: [1, 2, 3, 4], + * bar: [5, , , 8], + * moo: [ , 9,10, ], + * } + * ); + * + * // t = { + * // foo: { a: 1, default: 3, d: 4 }, + * // bar: { a: 5, default: 789, d: 8 }, + * // moo: { a: 123, default: 10, d: 1011 }, + * // }; + * ``` + * + * MAINTENANCE_TODO: `ZipKeysWithValues` is incorrect + * because Members no longer maps to Table[k]. It's not clear if this is even possible to fix + * because it requires mapping, not zipping. Maybe passing in a index mapping + * would fix it (which is gross) but if you have columnsKept as [0, 2, 3] then maybe it would + * be possible to generate the correct type? I don't think we can generate the map at compile time + * so we'd have to hand code it. Other ideas, don't generate kLimitsInfoCore and kLimitsInfoCompat + * where they are keys of infos. Instead, generate kLimitsInfoCoreDefaults, kLimitsInfoCoreMaximums, + * kLimitsInfoCoreClasses where each is just a `{[k: string]: type}`. Could zip those after or, + * maybe that suggests passing in the hard coded indices would work. + * + * @param columnRenames the name of the column in the table that will be assigned to the 'default' property of each entry. + * @param columnsKept the names of properties you want in the generated lookup table. This must be a subset of the columns of the tables except for the name 'default' which is looked from the previous argument. + * @param columns the names of the columns of the name + * @param defaults the default value by column for any element in a row of the table that is undefined + * @param table named table rows. + */ +export function makeTableRenameAndFilter(columnRenames, columnsKept, columns, defaults, table) { + const result = {}; + const keyToIndex = new Map( + columnsKept.map(name => { + const remappedName = columnRenames[name] === undefined ? name : columnRenames[name]; + return [name, columns.indexOf(remappedName)]; + }) + ); + + for (const [k, v] of Object.entries(table)) { + const item = {}; + for (const member of columnsKept) { + const ndx = keyToIndex.get(member); + item[member] = v[ndx] ?? defaults[ndx]; + } + result[k] = item; + } + + return result; +} diff --git a/tests/wpt/webgpu/tests/webgpu/common/util/navigator_gpu.js b/tests/wpt/webgpu/tests/webgpu/common/util/navigator_gpu.js index c37c2bc36a9..63b432b4ebe 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/util/navigator_gpu.js +++ b/tests/wpt/webgpu/tests/webgpu/common/util/navigator_gpu.js @@ -2,7 +2,7 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ -import { ErrorWithExtra, assert } from './util.js'; +import { ErrorWithExtra, assert, objectEquals } from './util.js'; /** * Finds and returns the `navigator.gpu` object (or equivalent, for non-browser implementations). @@ -37,6 +37,10 @@ let impl = undefined; let defaultRequestAdapterOptions; export function setDefaultRequestAdapterOptions(options) { + // It's okay to call this if you don't change the options + if (objectEquals(options, defaultRequestAdapterOptions)) { + return; + } if (impl) { throw new Error('must call setDefaultRequestAdapterOptions before getGPU'); } diff --git a/tests/wpt/webgpu/tests/webgpu/common/util/util.js b/tests/wpt/webgpu/tests/webgpu/common/util/util.js index 86e14af06e0..248fc2cc35f 100644 --- a/tests/wpt/webgpu/tests/webgpu/common/util/util.js +++ b/tests/wpt/webgpu/tests/webgpu/common/util/util.js @@ -157,6 +157,13 @@ export function rejectWithoutUncaught(err) { return p; } +/** + * Returns true if v is a plain JavaScript object. + */ +export function isPlainObject(v) { + return !!v && Object.getPrototypeOf(v).constructor === Object.prototype.constructor; +} + /** * Makes a copy of a JS `object`, with the keys reordered into sorted order. */ @@ -282,6 +289,51 @@ export const kTypedArrayBufferViews = { export const kTypedArrayBufferViewKeys = keysOf(kTypedArrayBufferViews); export const kTypedArrayBufferViewConstructors = Object.values(kTypedArrayBufferViews); +/** + * Creates a case parameter for a typedarray. + * + * You can't put typedarrays in case parameters directly so instead of + * + * ``` + * u.combine('data', [ + * new Uint8Array([1, 2, 3]), + * new Float32Array([4, 5, 6]), + * ]) + * ``` + * + * You can use + * + * ``` + * u.combine('data', [ + * typedArrayParam('Uint8Array' [1, 2, 3]), + * typedArrayParam('Float32Array' [4, 5, 6]), + * ]) + * ``` + * + * and then convert the params to typedarrays eg. + * + * ``` + * .fn(t => { + * const data = t.params.data.map(v => typedArrayFromParam(v)); + * }) + * ``` + */ +export function typedArrayParam(type, data) { + return { type, data }; +} + +export function createTypedArray(type, data) { + return new kTypedArrayBufferViews[type](data); +} + +/** + * Converts a TypedArrayParam to a typedarray. See typedArrayParam + */ +export function typedArrayFromParam(param) { + const { type, data } = param; + return createTypedArray(type, data); +} + function subarrayAsU8(buf, { start = 0, length }) { if (buf instanceof ArrayBuffer) { return new Uint8Array(buf, start, length); @@ -307,3 +359,25 @@ function subarrayAsU8(buf, { start = 0, length }) { export function memcpy(src, dst) { subarrayAsU8(dst.dst, dst).set(subarrayAsU8(src.src, src)); } + +/** + * Used to create a value that is specified by multiplying some runtime value + * by a constant and then adding a constant to it. + */ + +/** + * Filters out SpecValues that are the same. + */ +export function filterUniqueValueTestVariants(valueTestVariants) { + return new Map(valueTestVariants.map(v => [`m:${v.mult},a:${v.add}`, v])).values(); +} + +/** + * Used to create a value that is specified by multiplied some runtime value + * by a constant and then adding a constant to it. This happens often in test + * with limits that can only be known at runtime and yet we need a way to + * add parameters to a test and those parameters must be constants. + */ +export function makeValueTestVariant(base, variant) { + return base * variant.mult + variant.add; +} diff --git a/tests/wpt/webgpu/tests/webgpu/cts.https.html b/tests/wpt/webgpu/tests/webgpu/cts.https.html index 183d95783f8..60d93b5a8d1 100644 --- a/tests/wpt/webgpu/tests/webgpu/cts.https.html +++ b/tests/wpt/webgpu/tests/webgpu/cts.https.html @@ -218,6 +218,11 @@ + + + + + @@ -313,6 +318,7 @@ + @@ -806,6 +812,8 @@ + + @@ -841,6 +849,17 @@ + + + + + + + + + + + @@ -864,6 +883,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -882,13 +921,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -900,6 +982,7 @@ + @@ -917,16 +1000,19 @@ + + + @@ -1031,16 +1117,26 @@ - - - + + + + + + + + + + - + + + + @@ -1103,6 +1199,9 @@ + + + @@ -1110,7 +1209,9 @@ - + + + @@ -1129,7 +1230,9 @@ - + + + @@ -1175,6 +1278,9 @@ + + + @@ -1193,12 +1299,18 @@ - - - - - - + + + + + + + + + + + + @@ -1215,11 +1327,21 @@ + + + + + + + + - + + + @@ -1236,12 +1358,16 @@ - + + + - + + + @@ -1367,14 +1493,24 @@ - - + + + + + + + + + + + + @@ -1382,6 +1518,7 @@ + @@ -1526,13 +1663,118 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1551,9 +1793,26 @@ + + + + + + + + - + + + + + + + + + + @@ -1562,6 +1821,10 @@ + + + + @@ -1614,9 +1877,11 @@ - - - + + + + + @@ -1628,21 +1893,72 @@ + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1678,12 +1994,16 @@ + + - + + + diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js index 3472603c8de..73c5218507e 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js @@ -10,7 +10,12 @@ import { Fixture } from '../../../../common/framework/fixture.js'; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { getGPU } from '../../../../common/util/navigator_gpu.js'; import { assert, assertReject, raceWithRejectOnTimeout } from '../../../../common/util/util.js'; -import { kFeatureNames, kLimitInfo, kLimits } from '../../../capability_info.js'; +import { + getDefaultLimitsForAdapter, + kFeatureNames, + kLimits, + kLimitClasses, +} from '../../../capability_info.js'; import { clamp, isPowerOfTwo } from '../../../util/math.js'; export const g = makeTestGroup(Fixture); @@ -36,10 +41,11 @@ g.test('default') // Default device should have no features. t.expect(device.features.size === 0, 'Default device should not have any features'); // All limits should be defaults. + const limitInfo = getDefaultLimitsForAdapter(adapter); for (const limit of kLimits) { t.expect( - device.limits[limit] === kLimitInfo[limit].default, - `Expected ${limit} == default: ${device.limits[limit]} != ${kLimitInfo[limit].default}` + device.limits[limit] === limitInfo[limit].default, + `Expected ${limit} == default: ${device.limits[limit]} != ${limitInfo[limit].default}` ); } @@ -231,10 +237,11 @@ g.test('limits,supported') const adapter = await gpu.requestAdapter(); assert(adapter !== null); + const limitInfo = getDefaultLimitsForAdapter(adapter); let value = -1; switch (limitValue) { case 'default': - value = kLimitInfo[limit].default; + value = limitInfo[limit].default; break; case 'adapter': value = adapter.limits[limit]; @@ -264,7 +271,7 @@ g.test('limit,better_than_supported') .combine('limit', kLimits) .beginSubcases() .expandWithParams(p => { - switch (kLimitInfo[p.limit].class) { + switch (kLimitClasses[p.limit]) { case 'maximum': return [ { mul: 1, add: 1 }, @@ -287,9 +294,10 @@ g.test('limit,better_than_supported') const adapter = await gpu.requestAdapter(); assert(adapter !== null); + const limitInfo = getDefaultLimitsForAdapter(adapter); const value = adapter.limits[limit] * mul + add; const requiredLimits = { - [limit]: clamp(value, { min: 0, max: kLimitInfo[limit].maximumValue }), + [limit]: clamp(value, { min: 0, max: limitInfo[limit].maximumValue }), }; t.shouldReject('OperationError', adapter.requestDevice({ requiredLimits })); @@ -308,7 +316,7 @@ g.test('limit,worse_than_default') .combine('limit', kLimits) .beginSubcases() .expandWithParams(p => { - switch (kLimitInfo[p.limit].class) { + switch (kLimitClasses[p.limit]) { case 'maximum': return [ { mul: 1, add: -1 }, @@ -331,13 +339,14 @@ g.test('limit,worse_than_default') const adapter = await gpu.requestAdapter(); assert(adapter !== null); - const value = kLimitInfo[limit].default * mul + add; + const limitInfo = getDefaultLimitsForAdapter(adapter); + const value = limitInfo[limit].default * mul + add; const requiredLimits = { - [limit]: clamp(value, { min: 0, max: kLimitInfo[limit].maximumValue }), + [limit]: clamp(value, { min: 0, max: limitInfo[limit].maximumValue }), }; let success; - switch (kLimitInfo[limit].class) { + switch (limitInfo[limit].class) { case 'alignment': success = isPowerOfTwo(value); break; @@ -350,7 +359,7 @@ g.test('limit,worse_than_default') const device = await adapter.requestDevice({ requiredLimits }); assert(device !== null); t.expect( - device.limits[limit] === kLimitInfo[limit].default, + device.limits[limit] === limitInfo[limit].default, 'Devices reported limit should match the default limit' ); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js index 1b42190334f..a85ee333b10 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js @@ -15,8 +15,10 @@ import { kDepthStencilFormats, textureDimensionAndFormatCompatible, depthStencilFormatAspectSize, + isCompressedTextureFormat, + viewCompatible, } from '../../../format_info.js'; -import { GPUTest } from '../../../gpu_test.js'; +import { GPUTest, TextureTestMixin } from '../../../gpu_test.js'; import { makeBufferWithContents } from '../../../util/buffer.js'; import { checkElementsEqual, checkElementsEqualEither } from '../../../util/check_contents.js'; import { align } from '../../../util/math.js'; @@ -26,7 +28,7 @@ import { kBytesPerRowAlignment, dataBytesForCopyOrFail } from '../../../util/tex const dataGenerator = new DataArrayGenerator(); -class F extends GPUTest { +class F extends TextureTestMixin(GPUTest) { GetInitialDataPerMipLevel(dimension, textureSize, format, mipLevel) { const textureSizeAtLevel = physicalMipSize(textureSize, format, dimension, mipLevel); const bytesPerBlock = kTextureFormatInfo[format].color.bytes; @@ -62,6 +64,14 @@ class F extends GPUTest { srcCopyLevel, dstCopyLevel ) { + this.skipIfTextureFormatNotSupported(srcFormat, dstFormat); + + // If we're in compatibility mode and it's a compressed texture + // then we need to render the texture to test the results of the copy. + const extraTextureUsageFlags = + isCompressedTextureFormat(dstFormat) && this.isCompatibility + ? GPUTextureUsage.TEXTURE_BINDING + : 0; const mipLevelCount = dimension === '1d' ? 1 : 4; // Create srcTexture and dstTexture @@ -78,7 +88,7 @@ class F extends GPUTest { dimension, size: dstTextureSize, format: dstFormat, - usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST, + usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST | extraTextureUsageFlags, mipLevelCount, }; const dstTexture = this.device.createTexture(dstTextureDesc); @@ -165,14 +175,23 @@ class F extends GPUTest { assert(appliedCopyDepth >= 0); - const encoder = this.device.createCommandEncoder(); - encoder.copyTextureToTexture( - { texture: srcTexture, mipLevel: srcCopyLevel, origin: appliedSrcOffset }, - { texture: dstTexture, mipLevel: dstCopyLevel, origin: appliedDstOffset }, - { width: appliedCopyWidth, height: appliedCopyHeight, depthOrArrayLayers: appliedCopyDepth } - ); + const appliedSize = { + width: appliedCopyWidth, + height: appliedCopyHeight, + depthOrArrayLayers: appliedCopyDepth, + }; + + { + const encoder = this.device.createCommandEncoder(); + encoder.copyTextureToTexture( + { texture: srcTexture, mipLevel: srcCopyLevel, origin: appliedSrcOffset }, + { texture: dstTexture, mipLevel: dstCopyLevel, origin: appliedDstOffset }, + appliedSize + ); + + this.device.queue.submit([encoder.finish()]); + } - // Copy the whole content of dstTexture at dstCopyLevel to dstBuffer. const dstBlocksPerRow = dstTextureSizeAtLevel.width / blockWidth; const dstBlockRowsPerImage = dstTextureSizeAtLevel.height / blockHeight; const bytesPerDstAlignedBlockRow = align(dstBlocksPerRow * bytesPerBlock, 256); @@ -180,6 +199,67 @@ class F extends GPUTest { (dstBlockRowsPerImage * dstTextureSizeAtLevel.depthOrArrayLayers - 1) * bytesPerDstAlignedBlockRow + align(dstBlocksPerRow * bytesPerBlock, 4); + + if (isCompressedTextureFormat(dstTexture.format) && this.isCompatibility) { + assert(viewCompatible(srcFormat, dstFormat)); + // compare by rendering. We need the expected texture to match + // the dstTexture so we'll create a texture where we supply + // all of the data in JavaScript. + const expectedTexture = this.device.createTexture({ + size: [dstTexture.width, dstTexture.height, dstTexture.depthOrArrayLayers], + mipLevelCount: dstTexture.mipLevelCount, + format: dstTexture.format, + usage: dstTexture.usage, + }); + const expectedData = new Uint8Array(dstBufferSize); + + // Execute the equivalent of `copyTextureToTexture`, copying + // from `initialSrcData` to `expectedData`. + this.updateLinearTextureDataSubBox(dstFormat, appliedSize, { + src: { + dataLayout: { + bytesPerRow: srcBlocksPerRow * bytesPerBlock, + rowsPerImage: srcBlockRowsPerImage, + offset: 0, + }, + origin: appliedSrcOffset, + data: initialSrcData, + }, + dest: { + dataLayout: { + bytesPerRow: dstBlocksPerRow * bytesPerBlock, + rowsPerImage: dstBlockRowsPerImage, + offset: 0, + }, + origin: appliedDstOffset, + data: expectedData, + }, + }); + + // Upload `expectedData` to `expectedTexture`. If `copyTextureToTexture` + // worked then the contents of `dstTexture` should match `expectedTexture` + this.queue.writeTexture( + { texture: expectedTexture, mipLevel: dstCopyLevel }, + expectedData, + { + bytesPerRow: dstBlocksPerRow * bytesPerBlock, + rowsPerImage: dstBlockRowsPerImage, + }, + dstTextureSizeAtLevel + ); + + this.expectTexturesToMatchByRendering( + dstTexture, + expectedTexture, + dstCopyLevel, + appliedDstOffset, + appliedSize + ); + + return; + } + + // Copy the whole content of dstTexture at dstCopyLevel to dstBuffer. const dstBufferDesc = { size: dstBufferSize, usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST, @@ -187,17 +267,20 @@ class F extends GPUTest { const dstBuffer = this.device.createBuffer(dstBufferDesc); this.trackForCleanup(dstBuffer); - encoder.copyTextureToBuffer( - { texture: dstTexture, mipLevel: dstCopyLevel }, - { - buffer: dstBuffer, - bytesPerRow: bytesPerDstAlignedBlockRow, - rowsPerImage: dstBlockRowsPerImage, - }, - dstTextureSizeAtLevel - ); + { + const encoder = this.device.createCommandEncoder(); + encoder.copyTextureToBuffer( + { texture: dstTexture, mipLevel: dstCopyLevel }, + { + buffer: dstBuffer, + bytesPerRow: bytesPerDstAlignedBlockRow, + rowsPerImage: dstBlockRowsPerImage, + }, + dstTextureSizeAtLevel + ); - this.device.queue.submit([encoder.finish()]); + this.device.queue.submit([encoder.finish()]); + } // Fill expectedUint8DataWithPadding with the expected data of dstTexture. The other values in // expectedUint8DataWithPadding are kept 0 to check if the texels untouched by the copy are 0 @@ -810,6 +893,7 @@ g.test('color_textures,compressed,non_array') ) .beforeAllSubcases(t => { const { srcFormat, dstFormat } = t.params; + t.skipIfCopyTextureToTextureNotSupportedForFormat(srcFormat, dstFormat); t.selectDeviceOrSkipTestCase([ kTextureFormatInfo[srcFormat].feature, kTextureFormatInfo[dstFormat].feature, @@ -963,7 +1047,7 @@ g.test('color_textures,compressed,array') ) .beforeAllSubcases(t => { const { srcFormat, dstFormat } = t.params; - + t.skipIfCopyTextureToTextureNotSupportedForFormat(srcFormat, dstFormat); t.selectDeviceOrSkipTestCase([ kTextureFormatInfo[srcFormat].feature, kTextureFormatInfo[dstFormat].feature, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js index bb5eda5d90c..fa391eac04b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js @@ -33,14 +33,9 @@ DoCopyTextureToBufferWithDepthAspectTest(). TODO: Expand tests of GPUExtent3D [1] - -TODO: Fix this test for the various skipped formats [2]: -- snorm tests failing due to rounding -- float tests failing because float values are not byte-preserved -- compressed formats `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; -import { assert, memcpy, unreachable } from '../../../../common/util/util.js'; +import { assert, ErrorWithExtra, memcpy, unreachable } from '../../../../common/util/util.js'; import { kMinDynamicBufferOffsetAlignment, kBufferSizeAlignment, @@ -53,10 +48,13 @@ import { depthStencilBufferTextureCopySupported, textureDimensionAndFormatCompatible, depthStencilFormatAspectSize, + isCompressedTextureFormat, } from '../../../format_info.js'; -import { GPUTest } from '../../../gpu_test.js'; +import { GPUTest, TextureTestMixin } from '../../../gpu_test.js'; import { makeBufferWithContents } from '../../../util/buffer.js'; +import { checkElementsEqual } from '../../../util/check_contents.js'; import { align } from '../../../util/math.js'; +import { physicalMipSizeFromTexture } from '../../../util/texture/base.js'; import { DataArrayGenerator } from '../../../util/texture/data_generation.js'; import { bytesInACompleteRow, @@ -64,6 +62,8 @@ import { getTextureCopyLayout, kBytesPerRowAlignment, } from '../../../util/texture/layout.js'; +import { TexelView } from '../../../util/texture/texel_view.js'; +import { findFailedPixels } from '../../../util/texture/texture_ok.js'; /** Each combination of methods assume that the ones before it were tested and work correctly. */ const kMethodsToTest = [ @@ -75,64 +75,10 @@ const kMethodsToTest = [ { initMethod: 'WriteTexture', checkMethod: 'PartialCopyT2B' }, ]; -// [2]: Fix things so this list can be reduced to zero (see file description) -const kExcludedFormats = new Set([ - 'r8snorm', - 'rg8snorm', - 'rgba8snorm', - 'rg11b10ufloat', - 'rg16float', - 'rgba16float', - 'r32float', - 'rg32float', - 'rgba32float', -]); - -const kWorkingColorTextureFormats = kColorTextureFormats.filter(x => !kExcludedFormats.has(x)); - const dataGenerator = new DataArrayGenerator(); const altDataGenerator = new DataArrayGenerator(); -class ImageCopyTest extends GPUTest { - /** Offset for a particular texel in the linear texture data */ - getTexelOffsetInBytes(textureDataLayout, format, texel, origin = { x: 0, y: 0, z: 0 }) { - const { offset, bytesPerRow, rowsPerImage } = textureDataLayout; - const info = kTextureFormatInfo[format]; - - assert(texel.x >= origin.x && texel.y >= origin.y && texel.z >= origin.z); - assert(texel.x % info.blockWidth === 0); - assert(texel.y % info.blockHeight === 0); - assert(origin.x % info.blockWidth === 0); - assert(origin.y % info.blockHeight === 0); - - const bytesPerImage = rowsPerImage * bytesPerRow; - - return ( - offset + - (texel.z - origin.z) * bytesPerImage + - ((texel.y - origin.y) / info.blockHeight) * bytesPerRow + - ((texel.x - origin.x) / info.blockWidth) * info.color.bytes - ); - } - - *iterateBlockRows(size, origin, format) { - if (size.width === 0 || size.height === 0 || size.depthOrArrayLayers === 0) { - // do not iterate anything for an empty region - return; - } - const info = kTextureFormatInfo[format]; - assert(size.height % info.blockHeight === 0); - for (let y = 0; y < size.height; y += info.blockHeight) { - for (let z = 0; z < size.depthOrArrayLayers; ++z) { - yield { - x: origin.x, - y: origin.y + y, - z: origin.z + z, - }; - } - } - } - +class ImageCopyTest extends TextureTestMixin(GPUTest) { /** * This is used for testing passing undefined members of `GPUImageDataLayout` instead of actual * values where possible. Passing arguments as values and not as objects so that they are passed @@ -203,6 +149,114 @@ class ImageCopyTest extends GPUTest { } } + /** + * Compares data in `expected` to data in `buffer. + * Areas defined by size and dataLayout are compared by interpreting the data as appropriate + * for the texture format. As an example, with 'rgb9e5ufloat' multiple values can + * represent the same number. For example, double the exponent and halving the + * mantissa. Areas outside the area defined by size and dataLayout are expected to match + * by binary comparison. + */ + expectGPUBufferValuesEqualWhenInterpretedAsTextureFormat( + expected, + buffer, + format, + size, + dataLayout + ) { + if (isCompressedTextureFormat(format)) { + this.expectGPUBufferValuesEqual(buffer, expected); + return; + } + const regularFormat = format; + // data is in a format like this + // + // .... + // ttttt.. + // ttttt.. + // ttttt.. + // ....... + // ttttt.. + // ttttt.. + // ttttt... + // + // where the first `....` represents the portion of the buffer before + // `dataLayout.offset`. `ttttt` represents width (size[0]) and `..` + // represents the portion when `dataLayout.bytesPerRow` is greater than the + // data needed for width texels. `......` represents when height (size[1]) + // is less than `dataLayout.rowsPerImage`. `...` represents any data past + // ((height - 1) * depth * bytePerRow + bytesPerRow) and the end of the + // buffer + const checkByTextureFormat = actual => { + const zero = { x: 0, y: 0, z: 0 }; + + // compare texel areas + { + const actTexelView = TexelView.fromTextureDataByReference(regularFormat, actual, { + bytesPerRow: dataLayout.bytesPerRow, + rowsPerImage: dataLayout.rowsPerImage, + subrectOrigin: [0, 0, 0], + subrectSize: size, + }); + const expTexelView = TexelView.fromTextureDataByReference(regularFormat, expected, { + bytesPerRow: dataLayout.bytesPerRow, + rowsPerImage: dataLayout.rowsPerImage, + subrectOrigin: [0, 0, 0], + subrectSize: size, + }); + + const failedPixelsMessage = findFailedPixels( + regularFormat, + zero, + size, + { actTexelView, expTexelView }, + { + maxFractionalDiff: 0, + } + ); + + if (failedPixelsMessage !== undefined) { + const msg = 'Texture level had unexpected contents:\n' + failedPixelsMessage; + return new ErrorWithExtra(msg, () => ({ + expTexelView, + actTexelView, + })); + } + } + + // compare non texel areas + { + const rowLength = bytesInACompleteRow(size.width, format); + let lastOffset = 0; + for (const texel of this.iterateBlockRows(size, format)) { + const offset = this.getTexelOffsetInBytes(dataLayout, format, texel, zero); + const actualPart = actual.subarray(lastOffset, offset); + const expectedPart = expected.subarray(lastOffset, offset); + const error = checkElementsEqual(actualPart, expectedPart); + if (error) { + return error; + } + assert(offset >= lastOffset); // make sure iterateBlockRows always goes forward + lastOffset = offset + rowLength; + } + // compare end of buffers + { + const actualPart = actual.subarray(lastOffset, actual.length); + const expectedPart = expected.subarray(lastOffset, expected.length); + return checkElementsEqual(actualPart, expectedPart); + } + } + }; + + this.expectGPUBufferValuesPassCheck(buffer, checkByTextureFormat, { + srcByteOffset: 0, + type: Uint8Array, + typedLength: expected.length, + method: 'copy', + mode: 'fail', + }); + } + /** Run a CopyT2B command with appropriate arguments corresponding to `ChangeBeforePass` */ copyTextureToBufferWithAppliedArguments( buffer, @@ -312,12 +366,79 @@ class ImageCopyTest extends GPUTest { } } + generateMatchingTextureInJSRenderAndCompareContents( + { texture: actualTexture, mipLevel: mipLevelOrUndefined, origin }, + copySize, + format, + expected, + expectedDataLayout + ) { + const size = [actualTexture.width, actualTexture.height, actualTexture.depthOrArrayLayers]; + + const expectedTexture = this.device.createTexture({ + label: 'expectedTexture', + size, + dimension: actualTexture.dimension, + format, + mipLevelCount: actualTexture.mipLevelCount, + usage: actualTexture.usage, + }); + this.trackForCleanup(expectedTexture); + + const mipLevel = mipLevelOrUndefined || 0; + const fullMipLevelTextureCopyLayout = getTextureCopyLayout( + format, + actualTexture.dimension, + size, + { + mipLevel, + } + ); + + // allocate data for entire mip level. + const expectedTextureMipLevelData = new Uint8Array( + align(fullMipLevelTextureCopyLayout.byteLength, 4) + ); + + const mipSize = physicalMipSizeFromTexture(expectedTexture, mipLevel); + + // update the data for the entire mip level with the data + // that would be copied to the "actual" texture + this.updateLinearTextureDataSubBox(format, copySize, { + src: { + dataLayout: expectedDataLayout, + origin: { x: 0, y: 0, z: 0 }, + data: expected, + }, + dest: { + dataLayout: { offset: 0, ...fullMipLevelTextureCopyLayout }, + origin, + data: expectedTextureMipLevelData, + }, + }); + + // MAINTENANCE_TODO: If we're testing writeTexture should this use copyBufferToTexture instead? + this.queue.writeTexture( + { texture: expectedTexture, mipLevel }, + expectedTextureMipLevelData, + { ...fullMipLevelTextureCopyLayout, offset: 0 }, + mipSize + ); + + this.expectTexturesToMatchByRendering( + actualTexture, + expectedTexture, + mipLevel, + origin, + copySize + ); + } + /** * We check an appropriate part of the texture against the given data. * Used directly with PartialCopyT2B check method (for a subpart of the texture) * and by `copyWholeTextureToBufferAndCheckContentsWithUpdatedData` with FullCopyT2B check method - * (for the whole texture). We also ensure that CopyT2B doesn't overwrite bytes it's not supposed - * to if validateOtherBytesInBuffer is set to true. + * (for the whole texture). */ copyPartialTextureToBufferAndCheckContents( { texture, mipLevel, origin }, @@ -337,6 +458,14 @@ class ImageCopyTest extends GPUTest { GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST ); + // At this point both buffer and bufferData have the same random data in + // them. We'll use copyTextureToBuffer to update buffer with data from the + // texture and updateLinearTextureDataSubBox to update bufferData with the + // data we originally uploaded to the texture. + + // buffer has ...... in it. + // Copy to buffer the portion of texture that was previously uploaded. + // After execution buffer has t.t.t. because the rows are padded. this.copyTextureToBufferWithAppliedArguments( buffer, expectedDataLayout, @@ -345,80 +474,32 @@ class ImageCopyTest extends GPUTest { changeBeforePass ); - this.updateLinearTextureDataSubBox( - expectedDataLayout, - expectedDataLayout, - checkSize, - origin, - origin, - format, - bufferData, - expected - ); + // We originally copied expected to texture using expectedDataLayout. + // We're copying back out of texture above. - this.expectGPUBufferValuesEqual(buffer, bufferData); - } - - /** - * Copies the whole texture into linear data stored in a buffer for further checks. - * - * Used for `copyWholeTextureToBufferAndCheckContentsWithUpdatedData`. - */ - copyWholeTextureToNewBuffer({ texture, mipLevel }, resultDataLayout) { - const { mipSize, byteLength, bytesPerRow, rowsPerImage } = resultDataLayout; - const buffer = this.device.createBuffer({ - size: align(byteLength, 4), // this is necessary because we need to copy and map data from this buffer - usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST, + // bufferData has ...... in it. + // Update bufferData to have the same contents as buffer. + // When done, bufferData now has t.t.t. because the rows are padded. + this.updateLinearTextureDataSubBox(format, checkSize, { + src: { + dataLayout: expectedDataLayout, + origin: { x: 0, y: 0, z: 0 }, + data: expected, + }, + dest: { + dataLayout: expectedDataLayout, + origin: { x: 0, y: 0, z: 0 }, + data: bufferData, + }, }); - this.trackForCleanup(buffer); - const encoder = this.device.createCommandEncoder(); - encoder.copyTextureToBuffer( - { texture, mipLevel }, - { buffer, bytesPerRow, rowsPerImage }, - mipSize + this.expectGPUBufferValuesEqualWhenInterpretedAsTextureFormat( + bufferData, + buffer, + format, + checkSize, + expectedDataLayout ); - - this.device.queue.submit([encoder.finish()]); - - return buffer; - } - - /** - * Takes the data returned by `copyWholeTextureToNewBuffer` and updates it after a copy operation - * on the texture by emulating the copy behaviour here directly. - */ - updateLinearTextureDataSubBox( - destinationDataLayout, - sourceDataLayout, - copySize, - destinationOrigin, - sourceOrigin, - format, - destination, - source - ) { - for (const texel of this.iterateBlockRows(copySize, sourceOrigin, format)) { - const srcOffsetElements = this.getTexelOffsetInBytes( - sourceDataLayout, - format, - texel, - sourceOrigin - ); - - const dstOffsetElements = this.getTexelOffsetInBytes( - destinationDataLayout, - format, - texel, - destinationOrigin - ); - - const rowLength = bytesInACompleteRow(copySize.width, format); - memcpy( - { src: source, start: srcOffsetElements, length: rowLength }, - { dst: destination, start: dstOffsetElements } - ); - } } /** @@ -449,17 +530,18 @@ class ImageCopyTest extends GPUTest { // other eventual async expectations to ensure it will be correct. this.eventualAsyncExpectation(async () => { const readback = await readbackPromise; - this.updateLinearTextureDataSubBox( - { offset: 0, ...fullTextureCopyLayout }, - texturePartialDataLayout, - copySize, - destinationOrigin, - origin, - format, - readback.data, - partialData - ); - + this.updateLinearTextureDataSubBox(format, copySize, { + dest: { + dataLayout: { offset: 0, ...fullTextureCopyLayout }, + origin, + data: readback.data, + }, + src: { + dataLayout: texturePartialDataLayout, + origin: { x: 0, y: 0, z: 0 }, + data: partialData, + }, + }); this.copyPartialTextureToBufferAndCheckContents( { texture, mipLevel, origin: destinationOrigin }, { width: mipSize[0], height: mipSize[1], depthOrArrayLayers: mipSize[2] }, @@ -495,7 +577,7 @@ class ImageCopyTest extends GPUTest { format, dimension, mipLevelCount: mipLevel + 1, - usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST, + usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING, }); this.trackForCleanup(texture); @@ -512,27 +594,27 @@ class ImageCopyTest extends GPUTest { changeBeforePass ); - this.copyPartialTextureToBufferAndCheckContents( - { texture, mipLevel, origin }, - copySize, - format, - data, - textureDataLayout, - changeBeforePass - ); - + if (this.canCallCopyTextureToBufferWithTextureFormat(texture.format)) { + this.copyPartialTextureToBufferAndCheckContents( + { texture, mipLevel, origin }, + copySize, + format, + data, + textureDataLayout, + changeBeforePass + ); + } else { + this.generateMatchingTextureInJSRenderAndCompareContents( + { texture, mipLevel, origin }, + copySize, + format, + data, + textureDataLayout + ); + } break; } case 'FullCopyT2B': { - const fullTextureCopyLayout = getTextureCopyLayout(format, dimension, textureSize, { - mipLevel, - }); - - const fullData = this.copyWholeTextureToNewBuffer( - { texture, mipLevel }, - fullTextureCopyLayout - ); - this.uploadLinearTextureDataToTextureSubBox( { texture, mipLevel, origin }, textureDataLayout, @@ -542,16 +624,36 @@ class ImageCopyTest extends GPUTest { changeBeforePass ); - this.copyWholeTextureToBufferAndCheckContentsWithUpdatedData( - { texture, mipLevel, origin }, - fullTextureCopyLayout, - textureDataLayout, - copySize, - format, - fullData, - data - ); + if (this.canCallCopyTextureToBufferWithTextureFormat(texture.format)) { + const fullTextureCopyLayout = getTextureCopyLayout(format, dimension, textureSize, { + mipLevel, + }); + const fullData = this.copyWholeTextureToNewBuffer( + { texture, mipLevel }, + fullTextureCopyLayout + ); + + this.copyWholeTextureToBufferAndCheckContentsWithUpdatedData( + { texture, mipLevel, origin }, + fullTextureCopyLayout, + textureDataLayout, + copySize, + format, + fullData, + data + ); + } else { + this.generateMatchingTextureInJSRenderAndCompareContents( + { texture, mipLevel, origin }, + copySize, + format, + data, + textureDataLayout + //fullTextureCopyLayout, + //fullData, + ); + } break; } default: @@ -1224,7 +1326,7 @@ bytes in copy works for every format. .params(u => u .combineWithParams(kMethodsToTest) - .combine('format', kWorkingColorTextureFormats) + .combine('format', kColorTextureFormats) .filter(formatCanBeTested) .combine('dimension', kTextureDimensions) .filter(({ dimension, format }) => textureDimensionAndFormatCompatible(dimension, format)) @@ -1239,6 +1341,7 @@ bytes in copy works for every format. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -1324,7 +1427,7 @@ works for every format with 2d and 2d-array textures. .params(u => u .combineWithParams(kMethodsToTest) - .combine('format', kWorkingColorTextureFormats) + .combine('format', kColorTextureFormats) .filter(formatCanBeTested) .combine('dimension', kTextureDimensions) .filter(({ dimension, format }) => textureDimensionAndFormatCompatible(dimension, format)) @@ -1335,6 +1438,7 @@ works for every format with 2d and 2d-array textures. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -1396,7 +1500,7 @@ for all formats. We pass origin and copyExtent as [number, number, number].` .params(u => u .combineWithParams(kMethodsToTest) - .combine('format', kWorkingColorTextureFormats) + .combine('format', kColorTextureFormats) .filter(formatCanBeTested) .combine('dimension', kTextureDimensions) .filter(({ dimension, format }) => textureDimensionAndFormatCompatible(dimension, format)) @@ -1414,6 +1518,7 @@ for all formats. We pass origin and copyExtent as [number, number, number].` ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -1551,7 +1656,7 @@ TODO: Make a variant for depth-stencil formats. .params(u => u .combineWithParams(kMethodsToTest) - .combine('format', kWorkingColorTextureFormats) + .combine('format', kColorTextureFormats) .filter(formatCanBeTested) .combine('dimension', ['2d', '3d']) .filter(({ dimension, format }) => textureDimensionAndFormatCompatible(dimension, format)) @@ -1604,6 +1709,7 @@ TODO: Make a variant for depth-stencil formats. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/compute/basic.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/compute/basic.spec.js index a8859e6845d..2e5b1279001 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/compute/basic.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/compute/basic.spec.js @@ -4,18 +4,11 @@ Basic command buffer compute tests. `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; -import { kLimitInfo } from '../../../capability_info.js'; import { GPUTest } from '../../../gpu_test.js'; import { checkElementsEqualGenerated } from '../../../util/check_contents.js'; export const g = makeTestGroup(GPUTest); -const kMaxComputeWorkgroupSize = [ - kLimitInfo.maxComputeWorkgroupSizeX.default, - kLimitInfo.maxComputeWorkgroupSizeY.default, - kLimitInfo.maxComputeWorkgroupSizeZ.default, -]; - g.test('memcpy').fn(t => { const data = new Uint32Array([0x01020304]); @@ -73,28 +66,33 @@ g.test('large_dispatch') .params(u => u // Reasonably-sized powers of two, and some stranger larger sizes. - .combine('dispatchSize', [ - 256, - 2048, - 315, - 628, - 2179, - kLimitInfo.maxComputeWorkgroupsPerDimension.default, - ]) - + .combine('dispatchSize', [256, 2048, 315, 628, 2179, 'maximum']) // Test some reasonable workgroup sizes. .beginSubcases() // 0 == x axis; 1 == y axis; 2 == z axis. .combine('largeDimension', [0, 1, 2]) - .expand('workgroupSize', p => [1, 2, 8, 32, kMaxComputeWorkgroupSize[p.largeDimension]]) + .expand('workgroupSize', p => [1, 2, 8, 32, 'maximum']) ) .fn(t => { // The output storage buffer is filled with this value. const val = 0x01020304; const badVal = 0xbaadf00d; - const wgSize = t.params.workgroupSize; - const bufferLength = t.params.dispatchSize * wgSize; + const kMaxComputeWorkgroupSize = [ + t.device.limits.maxComputeWorkgroupSizeX, + t.device.limits.maxComputeWorkgroupSizeY, + t.device.limits.maxComputeWorkgroupSizeZ, + ]; + + const wgSize = + t.params.workgroupSize === 'maximum' + ? kMaxComputeWorkgroupSize[t.params.largeDimension] + : t.params.workgroupSize; + const dispatchSize = + t.params.dispatchSize === 'maximum' + ? t.device.limits.maxComputeWorkgroupsPerDimension + : t.params.dispatchSize; + const bufferLength = dispatchSize * wgSize; const bufferByteSize = Uint32Array.BYTES_PER_ELEMENT * bufferLength; const dst = t.device.createBuffer({ size: bufferByteSize, @@ -104,9 +102,9 @@ g.test('large_dispatch') // Only use one large dimension and workgroup size in the dispatch // call to keep the size of the test reasonable. const dims = [1, 1, 1]; - dims[t.params.largeDimension] = t.params.dispatchSize; + dims[t.params.largeDimension] = dispatchSize; const wgSizes = [1, 1, 1]; - wgSizes[t.params.largeDimension] = t.params.workgroupSize; + wgSizes[t.params.largeDimension] = wgSize; const pipeline = t.device.createComputePipeline({ layout: 'auto', compute: { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js index f50a0a05902..9dc3c27f580 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js @@ -151,6 +151,9 @@ g.test('render_pass_store_op,color_attachment_only') .combine('mipLevel', kMipLevel) .combine('arrayLayer', kArrayLayers) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.colorFormat); + }) .fn(t => { const colorAttachment = t.device.createTexture({ format: t.params.colorFormat, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js index e28bcdb7200..3b124b09e77 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js @@ -5,8 +5,11 @@ `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { range } from '../../../../common/util/util.js'; -import { kLimitInfo } from '../../../capability_info.js'; -import { kRenderableColorTextureFormats, kTextureFormatInfo } from '../../../format_info.js'; +import { + computeBytesPerSampleFromFormats, + kRenderableColorTextureFormats, + kTextureFormatInfo, +} from '../../../format_info.js'; import { GPUTest, TextureTestMixin } from '../../../gpu_test.js'; import { getFragmentShaderCodeWithOutput, getPlainTypeInfo } from '../../../util/shader.js'; import { kTexelRepresentationInfo } from '../../../util/texture/texel_data.js'; @@ -28,11 +31,14 @@ export const g = makeTestGroup(TextureTestMixin(GPUTest)); // Values to write into each attachment // We make values different for each attachment index and each channel // to make sure they didn't get mixed up + +// Clamp alpha to 3 to avoid comparing a large expected value with a max 3 value for rgb10a2uint +// MAINTENANCE_TODO: Make TexelRepresentation.numericRange per-component and use that. const attachmentsIntWriteValues = [ - { R: 1, G: 2, B: 3, A: 4 }, - { R: 5, G: 6, B: 7, A: 8 }, - { R: 9, G: 10, B: 11, A: 12 }, - { R: 13, G: 14, B: 15, A: 16 }, + { R: 1, G: 2, B: 3, A: 1 }, + { R: 5, G: 6, B: 7, A: 2 }, + { R: 9, G: 10, B: 11, A: 3 }, + { R: 13, G: 14, B: 15, A: 0 }, ]; const attachmentsFloatWriteValues = [ @@ -49,18 +55,11 @@ g.test('color,attachments') .combine('format', kRenderableColorTextureFormats) .beginSubcases() .combine('attachmentCount', [2, 3, 4]) - .filter(t => { - // We only need to test formats that have a valid color attachment bytes per sample. - const pixelByteCost = kTextureFormatInfo[t.format].colorRender?.byteCost; - return ( - pixelByteCost !== undefined && - pixelByteCost * t.attachmentCount <= kLimitInfo.maxColorAttachmentBytesPerSample.default - ); - }) .expand('emptyAttachmentId', p => range(p.attachmentCount, i => i)) ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -68,6 +67,14 @@ g.test('color,attachments') const componentCount = kTexelRepresentationInfo[format].componentOrder.length; const info = kTextureFormatInfo[format]; + // We only need to test formats that have a valid color attachment bytes per sample. + const pixelByteCost = kTextureFormatInfo[format].colorRender?.byteCost; + t.skipIf( + pixelByteCost === undefined || + computeBytesPerSampleFromFormats(range(attachmentCount, () => format)) > + t.device.limits.maxColorAttachmentBytesPerSample + ); + const writeValues = info.color.type === 'sint' || info.color.type === 'uint' ? attachmentsIntWriteValues @@ -156,6 +163,7 @@ g.test('color,component_count') ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js index 7ceffee00ee..f1f45e98143 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js @@ -262,6 +262,9 @@ struct FragmentOutput2 { class F extends TextureTestMixin(GPUTest) { async init() { await super.init(); + if (this.isCompatibility) { + this.skip('WGSL sample_mask is not supported in compatibility mode'); + } // Create a 2x2 color texture to sample from // texel 0 - Red // texel 1 - Green diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/color_target_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/color_target_state.spec.js index 4c648d1c1e9..6e55f623da7 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/color_target_state.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/color_target_state.spec.js @@ -322,6 +322,9 @@ g.test('blending,formats') u // .combine('format', kBlendableFormats) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(t => { const { format } = t.params; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js index e565f78fd8e..489975f63f2 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js @@ -423,9 +423,10 @@ g.test('vertex_attributes,basic') const vertexCount = 4; const instanceCount = 4; - const attributesPerVertexBuffer = - t.params.vertex_attribute_count / t.params.vertex_buffer_count; - assert(Math.round(attributesPerVertexBuffer) === attributesPerVertexBuffer); + // In compat mode, @builtin(vertex_index) and @builtin(instance_index) each take an attribute. + const maxAttributes = t.device.limits.maxVertexAttributes - (t.isCompatibility ? 2 : 0); + const numAttributes = Math.min(maxAttributes, t.params.vertex_attribute_count); + const maxAttributesPerVertexBuffer = Math.ceil(numAttributes / t.params.vertex_buffer_count); let shaderLocation = 0; let attributeValue = 0; @@ -470,7 +471,12 @@ g.test('vertex_attributes,basic') } const attributes = []; - for (let a = 0; a < attributesPerVertexBuffer; ++a) { + const numAttributesForBuffer = Math.min( + maxAttributesPerVertexBuffer, + maxAttributes - b * maxAttributesPerVertexBuffer + ); + + for (let a = 0; a < numAttributesForBuffer; ++a) { const attribute = { format: t.params.vertex_format, shaderLocation, @@ -483,7 +489,7 @@ g.test('vertex_attributes,basic') } for (let v = 0; v < vertexOrInstanceCount; ++v) { - for (let a = 0; a < attributesPerVertexBuffer; ++a) { + for (let a = 0; a < numAttributesForBuffer; ++a) { vertexBufferValues.push(attributeValue); attributeValue += 1.234; // Values will get rounded later if we make a Uint32Array. } @@ -564,7 +570,7 @@ g.test('vertex_attributes,basic') let accumulateVariableDeclarationsInFragmentShader = ''; let accumulateVariableAssignmentsInFragmentShader = ''; // The remaining 3 vertex attributes - if (t.params.vertex_attribute_count === 16) { + if (numAttributes === 16) { accumulateVariableDeclarationsInVertexShader = ` @location(13) @interpolate(flat) outAttrib13 : vec4<${wgslFormat}>, `; @@ -581,6 +587,21 @@ g.test('vertex_attributes,basic') outBuffer.primitives[input.primitiveId].attrib14 = input.attrib13.z; outBuffer.primitives[input.primitiveId].attrib15 = input.attrib13.w; `; + } else if (numAttributes === 14) { + accumulateVariableDeclarationsInVertexShader = ` + @location(13) @interpolate(flat) outAttrib13 : vec4<${wgslFormat}>, + `; + accumulateVariableAssignmentsInVertexShader = ` + output.outAttrib13 = + vec4<${wgslFormat}>(input.attrib12, input.attrib13, 0, 0); + `; + accumulateVariableDeclarationsInFragmentShader = ` + @location(13) @interpolate(flat) attrib13 : vec4<${wgslFormat}>, + `; + accumulateVariableAssignmentsInFragmentShader = ` + outBuffer.primitives[input.primitiveId].attrib12 = input.attrib13.x; + outBuffer.primitives[input.primitiveId].attrib13 = input.attrib13.y; + `; } const pipeline = t.device.createRenderPipeline({ diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js index 33a0d49d31d..b2a4c0d2b77 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js @@ -543,6 +543,7 @@ export const g = makeTestGroup(TextureZeroInitTest); g.test('uninitialized_texture_is_zero') .params(kTestParams) .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(kTextureFormatInfo[t.params.format].feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js index e67e308f181..f9501fc629f 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js @@ -2,14 +2,1142 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = ` Tests the behavior of different filtering modes in minFilter/magFilter/mipmapFilter. - -TODO: -- Test exact sampling results with small tolerance. Tests should differentiate between different - values for all three filter modes to make sure none are missed or incorrect in implementations. -- (Likely unnecessary with the above.) Test exactly the expected number of samples are used. - Test this by setting up a rendering and asserting how many different shades result. `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; -import { GPUTest } from '../../../gpu_test.js'; +import { kAddressModes, kMipmapFilterModes } from '../../../capability_info.js'; +import { kRenderableColorTextureFormats, kTextureFormatInfo } from '../../../format_info.js'; +import { GPUTest, TextureTestMixin } from '../../../gpu_test.js'; +import { getTextureCopyLayout } from '../../../util/texture/layout.js'; +import { TexelView } from '../../../util/texture/texel_view.js'; -export const g = makeTestGroup(GPUTest); +// Simple checkerboard 2x2 texture used as a base for the sampling. +const kCheckerTextureSize = 2; +const kCheckerTextureData = [ + { R: 1.0, G: 1.0, B: 1.0, A: 1.0 }, + { R: 0.0, G: 0.0, B: 0.0, A: 1.0 }, + { R: 0.0, G: 0.0, B: 0.0, A: 1.0 }, + { R: 1.0, G: 1.0, B: 1.0, A: 1.0 }, +]; + +class FilterModeTest extends TextureTestMixin(GPUTest) { + runFilterRenderPipeline(sampler, module, format, renderSize, vertexCount, instanceCount) { + const sampleTexture = this.createTextureFromTexelView( + TexelView.fromTexelsAsColors(format, coord => { + const id = coord.x + coord.y * kCheckerTextureSize; + return kCheckerTextureData[id]; + }), + { + size: [kCheckerTextureSize, kCheckerTextureSize], + usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST, + } + ); + + const renderTexture = this.device.createTexture({ + format, + size: renderSize, + usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC, + }); + const pipeline = this.device.createRenderPipeline({ + layout: 'auto', + vertex: { + module, + entryPoint: 'vs_main', + }, + fragment: { + module, + entryPoint: 'fs_main', + targets: [{ format }], + }, + }); + const bindgroup = this.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: sampler }, + { binding: 1, resource: sampleTexture.createView() }, + ], + }); + const commandEncoder = this.device.createCommandEncoder(); + const renderPass = commandEncoder.beginRenderPass({ + colorAttachments: [ + { + view: renderTexture.createView(), + clearValue: [0, 0, 0, 0], + loadOp: 'clear', + storeOp: 'store', + }, + ], + }); + renderPass.setPipeline(pipeline); + renderPass.setBindGroup(0, bindgroup); + renderPass.draw(vertexCount, instanceCount); + renderPass.end(); + this.device.queue.submit([commandEncoder.finish()]); + return renderTexture; + } +} + +export const g = makeTestGroup(FilterModeTest); + +/* For filter mode 'nearest', we need to check a 6x6 of pixels because 4x4s are identical when using + * address mode 'clamp-to-edge' and 'mirror-repeat'. The minFilter and magFilter tests are setup so + * that they both render the same results. (See the respective test for details.) The following + * table shows the expected results: + * u + * + * repeat clamp-to-edge mirror-repeat + * + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * repeat │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * v clamp-to-edge │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * + * │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + * mirror-repeat │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │ │█│ │█│ │█│ │ │ │ │█│█│█│ │█│ │ │█│█│ │ + * │█│ │█│ │█│ │ │█│█│█│ │ │ │ │ │█│█│ │ │█│ + */ +const kNearestRenderSize = 6; +const kNearestRenderDim = [kNearestRenderSize, kNearestRenderSize]; +const kNearestURepeatVRepeat = [ + [1, 0, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 1], + [1, 0, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 1], + [1, 0, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 1], +]; + +const kNearestURepeatVClamped = [ + [1, 0, 1, 0, 1, 0], + [1, 0, 1, 0, 1, 0], + [1, 0, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 1], + [0, 1, 0, 1, 0, 1], + [0, 1, 0, 1, 0, 1], +]; + +const kNearestURepeatVMirror = [ + [0, 1, 0, 1, 0, 1], + [1, 0, 1, 0, 1, 0], + [1, 0, 1, 0, 1, 0], + [0, 1, 0, 1, 0, 1], + [0, 1, 0, 1, 0, 1], + [1, 0, 1, 0, 1, 0], +]; + +const kNearestUClampedVRepeat = [ + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1], +]; + +const kNearestUClampedVClamped = [ + [1, 1, 1, 0, 0, 0], + [1, 1, 1, 0, 0, 0], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1], + [0, 0, 0, 1, 1, 1], + [0, 0, 0, 1, 1, 1], +]; + +const kNearestUClampedVMirror = [ + [0, 0, 0, 1, 1, 1], + [1, 1, 1, 0, 0, 0], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 1, 1], + [0, 0, 0, 1, 1, 1], + [1, 1, 1, 0, 0, 0], +]; + +const kNearestUMirrorVRepeat = [ + [0, 1, 1, 0, 0, 1], + [1, 0, 0, 1, 1, 0], + [0, 1, 1, 0, 0, 1], + [1, 0, 0, 1, 1, 0], + [0, 1, 1, 0, 0, 1], + [1, 0, 0, 1, 1, 0], +]; + +const kNearestUMirrorVClamped = [ + [0, 1, 1, 0, 0, 1], + [0, 1, 1, 0, 0, 1], + [0, 1, 1, 0, 0, 1], + [1, 0, 0, 1, 1, 0], + [1, 0, 0, 1, 1, 0], + [1, 0, 0, 1, 1, 0], +]; + +const kNearestUMirrorVMirror = [ + [1, 0, 0, 1, 1, 0], + [0, 1, 1, 0, 0, 1], + [0, 1, 1, 0, 0, 1], + [1, 0, 0, 1, 1, 0], + [1, 0, 0, 1, 1, 0], + [0, 1, 1, 0, 0, 1], +]; + +/* For filter mode 'linear', the tests samples 16 points (to create a 4x4) on what the effective 8x8 + * expanded texture via the address modes looks like (see table below for what those look like). The + * sample points are selected such that no combination of address modes result in the same render. + * There is exactly one sample point in each sub 2x2 of the 8x8 texture, thereby yielding the 4x4 + * result. Note that sampling from the 8x8 texture instead of the 6x6 texture is necessary because + * that allows us to keep the results in powers of 2 to minimize floating point errors on different + * backends. + * + * The 8x8 effective textures: + * u + * + * repeat clamp-to-edge mirror-repeat + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * repeat │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * v clamp-to-edge │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * mirror-repeat │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │█│ │█│ │█│ │█│ │ │ │ │ │ │█│█│█│█│ │█│█│ │ │█│█│ │ │ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * │ │█│ │█│ │█│ │█│ │█│█│█│█│ │ │ │ │ │ │ │█│█│ │ │█│█│ + * + * + * Sample points: + * The sample points are always at a 25% corner of a pixel such that the contributions come from + * the 2x2 (doubly outlined) with ratios 1/16, 3/16, or 9/16. + * ╔══╤══╦══╤══╦══╤══╦══╤══╗ + * ║ │ ║ │ ║ │ ║ │ ║ + * ╟──┼──╫──┼──╫──┼──╫──┼──╢ + * ║ │▘ ║ ▝│ ║ │▘ ║ ▝│ ║ + * ╠══╪══╬══╪══╬══╪══╬══╪══╣ + * ║ │ ║ │ ║ │ ║ │ ║ + * ╟──┼──╫──┼──╫──┼──╫──┼──╢ + * ║ │▘ ║ ▝│ ║ │▘ ║ ▝│ ║ + * ╠══╪══╬══╪══╬══╪══╬══╪══╣ + * ║ │▖ ║ ▗│ ║ │▖ ║ ▗│ ║ + * ╟──┼──╫──┼──╫──┼──╫──┼──╢ + * ║ │ ║ │ ║ │ ║ │ ║ + * ╠══╪══╬══╪══╬══╪══╬══╪══╣ + * ║ │▖ ║ ▗│ ║ │▖ ║ ▗│ ║ + * ╟──┼──╫──┼──╫──┼──╫──┼──╢ + * ║ │ ║ │ ║ │ ║ │ ║ + * ╚══╧══╩══╧══╩══╧══╩══╧══╝ + */ +const kLinearRenderSize = 4; +const kLinearRenderDim = [kLinearRenderSize, kLinearRenderSize]; +const kLinearURepeatVRepeat = [ + [10, 6, 10, 6], + [10, 6, 10, 6], + [6, 10, 6, 10], + [6, 10, 6, 10], +]; + +const kLinearURepeatVClamped = [ + [12, 4, 12, 4], + [12, 4, 12, 4], + [4, 12, 4, 12], + [4, 12, 4, 12], +]; + +const kLinearURepeatVMirror = [ + [4, 12, 4, 12], + [12, 4, 12, 4], + [4, 12, 4, 12], + [12, 4, 12, 4], +]; + +const kLinearUClampedVRepeat = [ + [12, 12, 4, 4], + [12, 12, 4, 4], + [4, 4, 12, 12], + [4, 4, 12, 12], +]; + +const kLinearUClampedVClamped = [ + [16, 16, 0, 0], + [16, 16, 0, 0], + [0, 0, 16, 16], + [0, 0, 16, 16], +]; + +const kLinearUClampedVMirror = [ + [0, 0, 16, 16], + [16, 16, 0, 0], + [0, 0, 16, 16], + [16, 16, 0, 0], +]; + +const kLinearUMirrorVRepeat = [ + [4, 12, 4, 12], + [4, 12, 4, 12], + [12, 4, 12, 4], + [12, 4, 12, 4], +]; + +const kLinearUMirrorVClamped = [ + [0, 16, 0, 16], + [0, 16, 0, 16], + [16, 0, 16, 0], + [16, 0, 16, 0], +]; + +const kLinearUMirrorVMirror = [ + [16, 0, 16, 0], + [0, 16, 0, 16], + [16, 0, 16, 0], + [0, 16, 0, 16], +]; + +function expectedNearestColors(format, addressModeU, addressModeV) { + let expectedColors; + switch (addressModeU) { + case 'clamp-to-edge': { + switch (addressModeV) { + case 'clamp-to-edge': + expectedColors = kNearestUClampedVClamped; + break; + case 'repeat': + expectedColors = kNearestUClampedVRepeat; + break; + case 'mirror-repeat': + expectedColors = kNearestUClampedVMirror; + break; + } + + break; + } + case 'repeat': + switch (addressModeV) { + case 'clamp-to-edge': + expectedColors = kNearestURepeatVClamped; + break; + case 'repeat': + expectedColors = kNearestURepeatVRepeat; + break; + case 'mirror-repeat': + expectedColors = kNearestURepeatVMirror; + break; + } + + break; + case 'mirror-repeat': + switch (addressModeV) { + case 'clamp-to-edge': + expectedColors = kNearestUMirrorVClamped; + break; + case 'repeat': + expectedColors = kNearestUMirrorVRepeat; + break; + case 'mirror-repeat': + expectedColors = kNearestUMirrorVMirror; + break; + } + + break; + } + + return TexelView.fromTexelsAsColors(format, coord => { + const c = expectedColors[coord.y][coord.x]; + return { R: c, G: c, B: c, A: 1.0 }; + }); +} +function expectedLinearColors(format, addressModeU, addressModeV) { + let expectedColors; + switch (addressModeU) { + case 'clamp-to-edge': { + switch (addressModeV) { + case 'clamp-to-edge': + expectedColors = kLinearUClampedVClamped; + break; + case 'repeat': + expectedColors = kLinearUClampedVRepeat; + break; + case 'mirror-repeat': + expectedColors = kLinearUClampedVMirror; + break; + } + + break; + } + case 'repeat': + switch (addressModeV) { + case 'clamp-to-edge': + expectedColors = kLinearURepeatVClamped; + break; + case 'repeat': + expectedColors = kLinearURepeatVRepeat; + break; + case 'mirror-repeat': + expectedColors = kLinearURepeatVMirror; + break; + } + + break; + case 'mirror-repeat': + switch (addressModeV) { + case 'clamp-to-edge': + expectedColors = kLinearUMirrorVClamped; + break; + case 'repeat': + expectedColors = kLinearUMirrorVRepeat; + break; + case 'mirror-repeat': + expectedColors = kLinearUMirrorVMirror; + break; + } + + break; + } + + return TexelView.fromTexelsAsColors(format, coord => { + const c = expectedColors[coord.y][coord.x]; + return { R: c / 16, G: c / 16, B: c / 16, A: 1.0 }; + }); +} +function expectedColors(format, filterMode, addressModeU, addressModeV) { + switch (filterMode) { + case 'nearest': + return expectedNearestColors(format, addressModeU, addressModeV); + case 'linear': + return expectedLinearColors(format, addressModeU, addressModeV); + } +} + +/* For the magFilter tests, each rendered pixel is an instanced quad such that the center of the + * quad coincides with the center of the pixel. The uv coordinates for each quad are shifted + * according to the test so that the center of the quad is at the point we want to sample. + * + * For the grid offset logic, see this codelab for reference: + * https://codelabs.developers.google.com/your-first-webgpu-app#4 + */ + +/* The following diagram shows the UV shift (almost to scale) for what the pixel at cell (0,0) looks + * like w.r.t the UV of the texture if we just mapped the entire 2x2 texture to the quad. Note that + * the square representing the mapped location on the bottom left is actually slighly smaller than a + * pixel in order to ensure that we are magnifying the texture and hence using the magFilter. It + * should be fairly straightforwards to derive that for each pixel, we are shifting (.5, -.5) from + * the picture. + * + * ┌─┬─┬─┬─┬─┬─┐ + * ├─┼─┼─┼─┼─┼─┤ (0,0) (1,0) + * ├─┼─╔═╪═╗─┼─┤ ╔═══╗ + * ├─┼─╫─┼─╫─┼─┤ ║─┼─║ + * ├─┼─╚═╪═╝─┼─┤ ╚═══╝ (-.875,1.625) (-.625,1.625) + * ╔═╗─┼─┼─┼─┼─┤ (0,1) (1,1) ╔═╗ + * ╚═╝─┴─┴─┴─┴─┘ ╚═╝ + * (-.875,1.875) (-.625,1.875) + */ +g.test('magFilter,nearest') + .desc( + ` + Test that for filterable formats, magFilter 'nearest' mode correctly modifies the sampling. + - format= {} + - addressModeU= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + - addressModeV= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + ` + ) + .params(u => + u + .combine('format', kRenderableColorTextureFormats) + .filter(t => { + return ( + kTextureFormatInfo[t.format].color.type === 'float' || + kTextureFormatInfo[t.format].color.type === 'unfilterable-float' + ); + }) + .beginSubcases() + .combine('addressModeU', kAddressModes) + .combine('addressModeV', kAddressModes) + ) + .beforeAllSubcases(t => { + if (kTextureFormatInfo[t.params.format].color.type === 'unfilterable-float') { + t.selectDeviceOrSkipTestCase('float32-filterable'); + } + }) + .fn(t => { + const { format, addressModeU, addressModeV } = t.params; + const sampler = t.device.createSampler({ + addressModeU, + addressModeV, + magFilter: 'nearest', + }); + const module = t.device.createShaderModule({ + code: ` + @group(0) @binding(0) var s : sampler; + @group(0) @binding(1) var t : texture_2d; + + struct VertexOut { + @builtin(position) pos: vec4f, + @location(0) uv: vec2f, + }; + + @vertex + fn vs_main(@builtin(vertex_index) vi : u32, + @builtin(instance_index) ii: u32) -> VertexOut { + const grid = vec2f(${kNearestRenderSize}, ${kNearestRenderSize}); + const posBases = array( + vec2f(1, 1), vec2f(1, -1), vec2f(-1, -1), + vec2f(1, 1), vec2f(-1, -1), vec2f(-1, 1), + ); + const uvBases = array( + vec2f(1., 0.), vec2f(1., 1.), vec2f(0., 1.), + vec2f(1., 0.), vec2f(0., 1.), vec2f(0., 0.), + ); + + // Compute the offset of instance plane. + let cell = vec2f(f32(ii) % grid.x, floor(f32(ii) / grid.y)); + let cellOffset = cell / grid * 2; + let pos = (posBases[vi] + 1) / grid - 1 + cellOffset; + + // Compute the offset of the UVs. + let uvBase = uvBases[vi] * 0.25 + vec2f(-0.875, 1.625); + const uvPerPixelOffset = vec2f(0.5, -0.5); + return VertexOut(vec4f(pos, 0.0, 1.0), uvBase + uvPerPixelOffset * cell); + } + + @fragment + fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f { + return textureSample(t, s, uv); + } + `, + }); + const vertexCount = 6; + const instanceCount = kNearestRenderDim.reduce((sink, current) => sink * current); + const render = t.runFilterRenderPipeline( + sampler, + module, + format, + kNearestRenderDim, + vertexCount, + instanceCount + ); + + t.expectTexelViewComparisonIsOkInTexture( + { texture: render }, + expectedColors(format, 'nearest', addressModeU, addressModeV), + kNearestRenderDim + ); + }); + +/* The following diagram shows the UV shift (almost to scale) for what the pixel at cell (0,0) (the + * dark square) looks like w.r.t the UV of the texture if we just mapped the entire 2x2 texture to + * the quad. The other small squares represent the other locations that we are sampling the texture + * at. The offsets are defined in the shader. + * + * ┌────┬────┬────┬────┬────┬────┬────┬────┐ + * │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ + * │ │□ │ □│ │ │□ │ □│ │ + * │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ + * │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ (0,0) (1,0) + * ├────┼────┼────╔════╪════╗────┼────┼────┤ ╔═════════╗ + * │ │□ │ □║ │ ║□ │ □│ │ ║ │ ║ + * │ │ │ ║ │ ║ │ │ │ ║ │ ║ + * ├────┼────┼────╫────┼────╫────┼────┼────┤ ║────┼────║ + * │ │ │ ║ │ ║ │ │ │ ║ │ ║ + * │ │□ │ □║ │ ║□ │ □│ │ ║ │ ║ + * ├────┼────┼────╚════╪════╝────┼────┼────┤ ╚═════════╝ + * │ │ │ │ │ │ │ │ │ (0,1) (1,1) + * │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ + * │ │ │ │ │ │ │ │ │ (-1,1.75) (-.75,1.75) + * │ │■ │ □│ │ │□ │ □│ │ ■ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ (-1,2) (-.75,2) + * │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────┴────┴────┴────┴────┘ + */ +g.test('magFilter,linear') + .desc( + ` + Test that for filterable formats, magFilter 'linear' mode correctly modifies the sampling. + - format= {} + - addressModeU= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + - addressModeV= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + ` + ) + .params(u => + u + .combine('format', kRenderableColorTextureFormats) + .filter(t => { + return ( + kTextureFormatInfo[t.format].color.type === 'float' || + kTextureFormatInfo[t.format].color.type === 'unfilterable-float' + ); + }) + .beginSubcases() + .combine('addressModeU', kAddressModes) + .combine('addressModeV', kAddressModes) + ) + .beforeAllSubcases(t => { + if (kTextureFormatInfo[t.params.format].color.type === 'unfilterable-float') { + t.selectDeviceOrSkipTestCase('float32-filterable'); + } + }) + .fn(t => { + const { format, addressModeU, addressModeV } = t.params; + const sampler = t.device.createSampler({ + addressModeU, + addressModeV, + magFilter: 'linear', + }); + const module = t.device.createShaderModule({ + code: ` + @group(0) @binding(0) var s : sampler; + @group(0) @binding(1) var t : texture_2d; + + struct VertexOut { + @builtin(position) pos: vec4f, + @location(0) uv: vec2f, + }; + + @vertex + fn vs_main(@builtin(vertex_index) vi : u32, + @builtin(instance_index) ii: u32) -> VertexOut { + const grid = vec2f(${kLinearRenderSize}, ${kLinearRenderSize}); + const posBases = array( + vec2f(1, 1), vec2f(1, -1), vec2f(-1, -1), + vec2f(1, 1), vec2f(-1, -1), vec2f(-1, 1), + ); + const uvBases = array( + vec2f(1., 0.), vec2f(1., 1.), vec2f(0., 1.), + vec2f(1., 0.), vec2f(0., 1.), vec2f(0., 0.), + ); + + // Compute the offset of instance plane. + let cell = vec2f(f32(ii) % grid.x, floor(f32(ii) / grid.y)); + let cellOffset = cell / grid * 2; + let pos = (posBases[vi] + 1) / grid - 1 + cellOffset; + + // Compute the offset of the UVs. + const uOffsets = array(0., 0.75, 2., 2.75); + const vOffsets = array(0., 1., 1.75, 2.75); + let uvBase = uvBases[vi] * 0.25 + vec2f(-1., 1.75); + let uvPixelOffset = vec2f(uOffsets[u32(cell.x)], -vOffsets[u32(cell.y)]); + return VertexOut(vec4f(pos, 0.0, 1.0), uvBase + uvPixelOffset); + } + + @fragment + fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f { + return textureSample(t, s, uv); + } + `, + }); + const vertexCount = 6; + const instanceCount = kLinearRenderDim.reduce((sink, current) => sink * current); + const render = t.runFilterRenderPipeline( + sampler, + module, + format, + kLinearRenderDim, + vertexCount, + instanceCount + ); + + t.expectTexelViewComparisonIsOkInTexture( + { texture: render }, + expectedColors(format, 'linear', addressModeU, addressModeV), + kLinearRenderDim + ); + }); + +/* For the minFilter tests, each rendered pixel is a small instanced quad that is UV mapped such + * that it is either the 6x6 or 8x8 textures from above. Each quad in each cell is then offsetted + * and scaled so that the target sample point coincides with the center of the pixel and the texture + * is significantly smaller than the pixel to force minFilter mode. + * + * For the grid offset logic, see this codelab for reference: + * https://codelabs.developers.google.com/your-first-webgpu-app#4 + */ + +/* The following diagram depicts a single pixel and the sub-pixel sized 6x6 textured quad. The + * distances shown in the diagram are pre-grid transformation and relative to the quad. Notice that + * for cell (0,0) marked with an x, we need to offset the center by (5/12,5/12), and per cell, the + * offset is (-1/6, -1/6). + * + * + * ┌───────────────────────────────────────────────┐ + * │ │ + * │ │ + * │ │ + * │ │ + * │ │ + * │ ┌───┬───┬───┬───┬───┬───┐ │ + * │ │ │ │ │ │ │ │ │ + * │ ├───┼───┼───┼───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ + * │ ├───┼───┼───┼───┼───┼───┤ │ + * │ │ │ │ │ │ │ │ │ + * │ ├───┼───┼───x───┼───┼───┤ │ ┐ + * │ │ │ │ │ │ │ │ │ │ + * │ ├───┼───┼───┼───┼───┼───┤ │ │ 5/12 + * │ │ │ │ │ │ │ │ │ ┐ │ + * │ ├───┼───┼───┼───┼───┼───┤ │ │ 1/6 │ + * │ │ x │ │ │ │ │ │ │ ┘ ┘ + * │ └───┴───┴───┴───┴───┴───┘ │ + * │ │ + * │ │ + * │ │ + * │ │ + * │ │ + * └───────────────────────────────────────────────┘ + */ +g.test('minFilter,nearest') + .desc( + ` + Test that for filterable formats, minFilter 'nearest' mode correctly modifies the sampling. + - format= {} + - addressModeU= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + - addressModeV= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + ` + ) + .params(u => + u + .combine('format', kRenderableColorTextureFormats) + .filter(t => { + return ( + kTextureFormatInfo[t.format].color.type === 'float' || + kTextureFormatInfo[t.format].color.type === 'unfilterable-float' + ); + }) + .beginSubcases() + .combine('addressModeU', kAddressModes) + .combine('addressModeV', kAddressModes) + ) + .beforeAllSubcases(t => { + if (kTextureFormatInfo[t.params.format].color.type === 'unfilterable-float') { + t.selectDeviceOrSkipTestCase('float32-filterable'); + } + }) + .fn(t => { + const { format, addressModeU, addressModeV } = t.params; + const sampler = t.device.createSampler({ + addressModeU, + addressModeV, + minFilter: 'nearest', + }); + const module = t.device.createShaderModule({ + code: ` + @group(0) @binding(0) var s : sampler; + @group(0) @binding(1) var t : texture_2d; + + struct VertexOut { + @builtin(position) pos: vec4f, + @location(0) uv: vec2f, + }; + + @vertex + fn vs_main(@builtin(vertex_index) vi : u32, + @builtin(instance_index) ii: u32) -> VertexOut { + const grid = vec2f(${kNearestRenderSize}, ${kNearestRenderSize}); + const posBases = array( + vec2f(.5, .5), vec2f(.5, -.5), vec2f(-.5, -.5), + vec2f(.5, .5), vec2f(-.5, -.5), vec2f(-.5, .5), + ); + // Choose UVs so that the quad ends up being the 6x6 texture. + const uvBases = array( + vec2f(2., -1.), vec2f(2., 2.), vec2f(-1., 2.), + vec2f(2., -1.), vec2f(-1., 2.), vec2f(-1., -1.), + ); + + let cell = vec2f(f32(ii) % grid.x, floor(f32(ii) / grid.y)); + + // Compute the offset of instance plane (pre-grid transformation). + const constantPlaneOffset = vec2f(5. / 12., 5. / 12.); + const perPixelOffset = vec2f(1. / 6., 1. / 6.); + let posBase = posBases[vi] + constantPlaneOffset - perPixelOffset * cell; + + // Apply the grid transformation. + let cellOffset = cell / grid * 2; + let absPos = (posBase + 1) / grid - 1 + cellOffset; + + return VertexOut(vec4f(absPos, 0.0, 1.0), uvBases[vi]); + } + + @fragment + fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f { + return textureSample(t, s, uv); + } + `, + }); + const vertexCount = 6; + const instanceCount = kNearestRenderDim.reduce((sink, current) => sink * current); + const render = t.runFilterRenderPipeline( + sampler, + module, + format, + kNearestRenderDim, + vertexCount, + instanceCount + ); + + t.expectTexelViewComparisonIsOkInTexture( + { texture: render }, + expectedColors(format, 'nearest', addressModeU, addressModeV), + kNearestRenderDim + ); + }); + +/* The following diagram shows the sub-pixel quad and the relative distances between the sample + * points and the origin. The pixel is not shown in this diagram but is a 2x bounding box around the + * quad similar to the one in the diagram for minFilter,nearest above. The dark square is where the + * cell (0,0) is, and the offsets are all relative to that point. + * + * 11/32 + * ┌─────────────┐ + * + * 3/16 5/16 3/16 + * ┌───────┬───────────┬───────┐ + * + * ┌────┬────┬────┬────┬────┬────┬────┬────┐ + * │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ + * │ │□ │ □│ │ │□ │ □│ │ ┐ + * │ │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ │ + * │ │ │ │ │ │ │ │ │ │ 1/4 + * │ │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ │ + * │ │□ │ □│ │ │□ │ □│ │ ┤ + * │ │ │ │ │ │ │ │ │ │ + * ├────┼────┼────┼────x────┼────┼────┼────┤ │ 3/16 ┐ + * │ │ │ │ │ │ │ │ │ │ │ + * │ │□ │ □│ │ │□ │ □│ │ ┤ │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ │ │ + * │ │ │ │ │ │ │ │ │ │ │ 11/32 + * │ │ │ │ │ │ │ │ │ │ 1/4 │ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ │ │ + * │ │ │ │ │ │ │ │ │ │ │ + * │ │■ │ □│ │ │□ │ □│ │ ┘ ┘ + * ├────┼────┼────┼────┼────┼────┼────┼────┤ + * │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────┴────┴────┴────┴────┘ + */ +g.test('minFilter,linear') + .desc( + ` + Test that for filterable formats, minFilter 'linear' mode correctly modifies the sampling. + - format= {} + - addressModeU= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + - addressModeV= {'clamp-to-edge', 'repeat', 'mirror-repeat'} + ` + ) + .params(u => + u + .combine('format', kRenderableColorTextureFormats) + .filter(t => { + return ( + kTextureFormatInfo[t.format].color.type === 'float' || + kTextureFormatInfo[t.format].color.type === 'unfilterable-float' + ); + }) + .beginSubcases() + .combine('addressModeU', kAddressModes) + .combine('addressModeV', kAddressModes) + ) + .beforeAllSubcases(t => { + if (kTextureFormatInfo[t.params.format].color.type === 'unfilterable-float') { + t.selectDeviceOrSkipTestCase('float32-filterable'); + } + }) + .fn(t => { + const { format, addressModeU, addressModeV } = t.params; + const sampler = t.device.createSampler({ + addressModeU, + addressModeV, + minFilter: 'linear', + }); + const module = t.device.createShaderModule({ + code: ` + @group(0) @binding(0) var s : sampler; + @group(0) @binding(1) var t : texture_2d; + + struct VertexOut { + @builtin(position) pos: vec4f, + @location(0) uv: vec2f, + }; + + @vertex + fn vs_main(@builtin(vertex_index) vi : u32, + @builtin(instance_index) ii: u32) -> VertexOut { + const grid = vec2f(${kLinearRenderSize}, ${kLinearRenderSize}); + const posBases = array( + vec2f(.5, .5), vec2f(.5, -.5), vec2f(-.5, -.5), + vec2f(.5, .5), vec2f(-.5, -.5), vec2f(-.5, .5), + ); + // Choose UVs so that the quad ends up being the 8x8 texture. + const uvBases = array( + vec2f(2.5, -1.5), vec2f(2.5, 2.5), vec2f(-1.5, 2.5), + vec2f(2.5, -1.5), vec2f(-1.5, 2.5), vec2f(-1.5, -1.5), + ); + + let cell = vec2f(f32(ii) % grid.x, floor(f32(ii) / grid.y)); + + // Compute the offset of instance plane (pre-grid transformation). + const constantPlaneOffset = vec2f(11. / 32., 11. / 32.); + const xOffsets = array(0., 3. / 16., 1. / 2., 11. / 16.); + const yOffsets = array(0., 1. / 4., 7. / 16., 11. / 16.); + let pixelOffset = vec2f(xOffsets[u32(cell.x)], yOffsets[u32(cell.y)]); + let posBase = posBases[vi] + constantPlaneOffset - pixelOffset; + + // Compute the offset of instance plane. + let cellOffset = cell / grid * 2; + let absPos = (posBase + 1) / grid - 1 + cellOffset; + + return VertexOut(vec4f(absPos, 0.0, 1.0), uvBases[vi]); + } + + @fragment + fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f { + return textureSample(t, s, uv); + } + `, + }); + const vertexCount = 6; + const instanceCount = kLinearRenderDim.reduce((sink, current) => sink * current); + const render = t.runFilterRenderPipeline( + sampler, + module, + format, + kLinearRenderDim, + vertexCount, + instanceCount + ); + + t.expectTexelViewComparisonIsOkInTexture( + { texture: render }, + expectedColors(format, 'linear', addressModeU, addressModeV), + kLinearRenderDim + ); + }); + +g.test('mipmapFilter') + .desc( + ` + Test that for filterable formats, mipmapFilter modes correctly modifies the sampling. + - format= {} + - filterMode= {'nearest', 'linear'} + ` + ) + .params(u => + u + .combine('format', kRenderableColorTextureFormats) + .filter(t => { + return ( + kTextureFormatInfo[t.format].color.type === 'float' || + kTextureFormatInfo[t.format].color.type === 'unfilterable-float' + ); + }) + .beginSubcases() + .combine('filterMode', kMipmapFilterModes) + ) + .beforeAllSubcases(t => { + if (kTextureFormatInfo[t.params.format].color.type === 'unfilterable-float') { + t.selectDeviceOrSkipTestCase('float32-filterable'); + } + }) + .fn(t => { + const { format, filterMode } = t.params; + // Takes a 8x8/4x4 mipmapped texture and renders it on multiple quads with different UVs such + // that each instanced quad from left to right emulates moving the quad further and further from + // the camera. Each quad is then rendered to a single pixel in a 1-dimensional texture. Since + // the 8x8 is fully black and the 4x4 is fully white, we should see the pixels increase in + // brightness from left to right when sampling linearly, and jump from black to white when + // sampling for the nearest mip level. + const kTextureSize = 8; + const kRenderSize = 8; + + const sampler = t.device.createSampler({ + mipmapFilter: filterMode, + }); + const sampleTexture = t.createTextureFromTexelViewsMultipleMipmaps( + [ + TexelView.fromTexelsAsColors(format, () => { + return { R: 0.0, G: 0.0, B: 0.0, A: 1.0 }; + }), + TexelView.fromTexelsAsColors(format, coord => { + return { R: 1.0, G: 1.0, B: 1.0, A: 1.0 }; + }), + ], + + { + size: [kTextureSize, 1], + usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST, + } + ); + + const renderTexture = t.device.createTexture({ + format, + size: [kRenderSize, 1], + usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC, + }); + const module = t.device.createShaderModule({ + code: ` + @group(0) @binding(0) var s : sampler; + @group(0) @binding(1) var t : texture_2d; + + struct VertexOut { + @builtin(position) pos: vec4f, + @location(0) uv: vec2f, + }; + + @vertex + fn vs_main(@builtin(vertex_index) vi : u32, + @builtin(instance_index) ii: u32) -> VertexOut { + const grid = vec2f(${kRenderSize}., 1.); + const pos = array( + vec2f( 1.0, 1.0), vec2f( 1.0, -1.0), vec2f(-1.0, -1.0), + vec2f( 1.0, 1.0), vec2f(-1.0, -1.0), vec2f(-1.0, 1.0), + ); + const uv = array( + vec2f(1., 0.), vec2f(1., 1.), vec2f(0., 1.), + vec2f(1., 0.), vec2f(0., 1.), vec2f(0., 0.), + ); + + // Compute the offset of the plane. + let cell = vec2f(f32(ii) % grid.x, 0.); + let cellOffset = cell / grid * 2; + let absPos = (pos[vi] + 1) / grid - 1 + cellOffset; + let uvFactor = (1. / 8.) * (1 + (f32(ii) / (grid.x - 1))); + return VertexOut(vec4f(absPos, 0.0, 1.0), uv[vi] * uvFactor); + } + + @fragment + fn fs_main(@location(0) uv : vec2f) -> @location(0) vec4f { + return textureSample(t, s, uv); + } + `, + }); + const pipeline = t.device.createRenderPipeline({ + layout: 'auto', + vertex: { + module, + entryPoint: 'vs_main', + }, + fragment: { + module, + entryPoint: 'fs_main', + targets: [{ format }], + }, + }); + const bindgroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: sampler }, + { binding: 1, resource: sampleTexture.createView() }, + ], + }); + const commandEncoder = t.device.createCommandEncoder(); + const renderPass = commandEncoder.beginRenderPass({ + colorAttachments: [ + { + view: renderTexture.createView(), + clearValue: [0, 0, 0, 0], + loadOp: 'clear', + storeOp: 'store', + }, + ], + }); + renderPass.setPipeline(pipeline); + renderPass.setBindGroup(0, bindgroup); + renderPass.draw(6, kRenderSize); + renderPass.end(); + t.device.queue.submit([commandEncoder.finish()]); + + // Since mipmap filtering varies across different backends, we verify that the result exhibits + // filtered characteristics without strict value equalities via copies to a buffer. + const buffer = t.copyWholeTextureToNewBufferSimple(renderTexture, 0); + t.expectGPUBufferValuesPassCheck( + buffer, + actual => { + // Convert the buffer to texel view so we can do comparisons. + const layout = getTextureCopyLayout(format, '2d', [kRenderSize, 1, 1]); + const view = TexelView.fromTextureDataByReference(format, actual, { + bytesPerRow: layout.bytesPerRow, + rowsPerImage: layout.rowsPerImage, + subrectOrigin: [0, 0, 0], + subrectSize: [kRenderSize, 1, 1], + }); + + // We only check the R component for the conditions, since all components should be equal if + // specified in the format. + switch (filterMode) { + case 'linear': { + // For 'linear' mode, we check that the resulting 1d image is monotonically increasing. + for (let x = 1; x < kRenderSize; x++) { + const { R: Ri } = view.color({ x: x - 1, y: 0, z: 0 }); + const { R: Rj } = view.color({ x, y: 0, z: 0 }); + if (Ri >= Rj) { + return Error( + 'Linear filtering on mipmaps should be a monotonically increasing sequence:\n' + + view.toString( + { x: 0, y: 0, z: 0 }, + { width: kRenderSize, height: 1, depthOrArrayLayers: 1 } + ) + ); + } + } + break; + } + case 'nearest': { + // For 'nearest' mode, we check that the resulting 1d image changes from 0.0 to 1.0 + // exactly once. + let changes = 0; + for (let x = 1; x < kRenderSize; x++) { + const { R: Ri } = view.color({ x: x - 1, y: 0, z: 0 }); + const { R: Rj } = view.color({ x, y: 0, z: 0 }); + if (Ri !== Rj) { + changes++; + } + } + if (changes !== 1) { + return Error( + `Nearest filtering on mipmaps should change exacly once but found (${changes}):\n` + + view.toString( + { x: 0, y: 0, z: 0 }, + { width: kRenderSize, height: 1, depthOrArrayLayers: 1 } + ) + ); + } + break; + } + } + + return undefined; + }, + { srcByteOffset: 0, type: Uint8Array, typedLength: buffer.size } + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js index 69c4dd68e3c..b4af4f28fd7 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js @@ -99,6 +99,10 @@ g.test('texture_binding') ({ format, viewFormat }) => format !== viewFormat && viewCompatible(format, viewFormat) ) ) + .beforeAllSubcases(t => { + const { format, viewFormat } = t.params; + t.skipIfTextureFormatNotSupported(format, viewFormat); + }) .fn(t => { const { format, viewFormat } = t.params; @@ -197,6 +201,10 @@ in view format and match in base format.` ) .combine('sampleCount', [1, 4]) ) + .beforeAllSubcases(t => { + const { format, viewFormat } = t.params; + t.skipIfTextureFormatNotSupported(format, viewFormat); + }) .fn(t => { const { format, viewFormat, sampleCount } = t.params; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js index 0d6ffc853ef..4b54604e1ae 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js @@ -1,15 +1,18 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = ` -TODO: Test more corner case values for Float16 / Float32 (INF, NaN, +-0, ...) and reduce the +TODO: Test more corner case values for Float16 / Float32 (INF, NaN, ...) and reduce the float tolerance. `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; -import { assert, memcpy, unreachable } from '../../../../common/util/util.js'; import { - kMaxVertexAttributes, - kMaxVertexBufferArrayStride, - kMaxVertexBuffers, + assert, + filterUniqueValueTestVariants, + makeValueTestVariant, + memcpy, + unreachable, +} from '../../../../common/util/util.js'; +import { kPerStageBindingLimits, kVertexFormatInfo, kVertexFormats, @@ -59,8 +62,11 @@ class VertexStateTest extends GPUTest { // than maxVertexAttributes = 16. // However this might not work in the future for implementations that allow even more vertex // attributes so there will need to be larger changes when that happens. - const maxUniformBuffers = kPerStageBindingLimits['uniformBuf'].max; - assert(maxUniformBuffers + kPerStageBindingLimits['storageBuf'].max >= kMaxVertexAttributes); + const maxUniformBuffers = this.getDefaultLimit(kPerStageBindingLimits['uniformBuf'].maxLimit); + assert( + maxUniformBuffers + this.getDefaultLimit(kPerStageBindingLimits['storageBuf'].maxLimit) >= + this.device.limits.maxVertexAttributes + ); let vsInputs = ''; let vsChecks = ''; @@ -138,7 +144,7 @@ fn check(success : bool) { } fn floatsSimilar(a : f32, b : f32, tolerance : f32) -> bool { - // TODO do we check for + and - 0? + // Note: -0.0 and 0.0 have different bit patterns, but compare as equal. return abs(a - b) < tolerance; } @@ -257,7 +263,8 @@ struct VSOutputs { switch (formatInfo.type) { case 'float': { - const data = [42.42, 0.0, 1.0, -1.0, 1000, -18.7, 25.17]; + // -0.0 and +0.0 have different bit patterns, but compare as equal. + const data = [42.42, 0.0, -0.0, 1.0, -1.0, 1000, -18.7, 25.17]; const expectedData = new Float32Array(data).buffer; const vertexData = bitSize === 32 @@ -564,11 +571,21 @@ g.test('vertex_format_to_shader_format_conversion') .combine('format', kVertexFormats) .combine('shaderComponentCount', [1, 2, 3, 4]) .beginSubcases() - .combine('slot', [0, 1, kMaxVertexBuffers - 1]) - .combine('shaderLocation', [0, 1, kMaxVertexAttributes - 1]) + .combine('slotVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('shaderLocationVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) ) .fn(t => { - const { format, shaderComponentCount, slot, shaderLocation } = t.params; + const { format, shaderComponentCount, slotVariant, shaderLocationVariant } = t.params; + const slot = t.makeLimitVariant('maxVertexBuffers', slotVariant); + const shaderLocation = t.makeLimitVariant('maxVertexAttributes', shaderLocationVariant); t.runTest([ { slot, @@ -647,30 +664,40 @@ g.test('non_zero_array_stride_and_attribute_offset') u // .combine('format', kVertexFormats) .beginSubcases() - .expand('arrayStride', p => { + .expand('arrayStrideVariant', p => { const formatInfo = kVertexFormatInfo[p.format]; const formatSize = formatInfo.bytesPerComponent * formatInfo.componentCount; - return [align(formatSize, 4), align(formatSize, 4) + 4, kMaxVertexBufferArrayStride]; + return [ + { mult: 0, add: align(formatSize, 4) }, + { mult: 0, add: align(formatSize, 4) + 4 }, + { mult: 1, add: 0 }, + ]; }) - .expand('offset', p => { + .expand('offsetVariant', p => { const formatInfo = kVertexFormatInfo[p.format]; const formatSize = formatInfo.bytesPerComponent * formatInfo.componentCount; - return new Set( - [ - 0, - formatSize, - 4, - p.arrayStride / 2, - p.arrayStride - formatSize * 2, - p.arrayStride - formatSize - 4, - p.arrayStride - formatSize, - ].map(offset => clamp(offset, { min: 0, max: p.arrayStride - formatSize })) - ); + return [ + { mult: 0, add: 0 }, + { mult: 0, add: formatSize }, + { mult: 0, add: 4 }, + { mult: 0.5, add: 0 }, + { mult: 1, add: -formatSize * 2 }, + { mult: 1, add: -formatSize - 4 }, + { mult: 1, add: -formatSize }, + ]; }) ) .fn(t => { - const { format, arrayStride, offset } = t.params; + const { format, arrayStrideVariant, offsetVariant } = t.params; + const arrayStride = t.makeLimitVariant('maxVertexBufferArrayStride', arrayStrideVariant); + const formatInfo = kVertexFormatInfo[format]; + const formatSize = formatInfo.bytesPerComponent * formatInfo.componentCount; + const offset = clamp(makeValueTestVariant(arrayStride, offsetVariant), { + min: 0, + max: arrayStride - formatSize, + }); + t.runTest([ { slot: 0, @@ -728,11 +755,16 @@ g.test('vertex_buffer_used_multiple_times_overlapped') u // .combine('format', kVertexFormats) .beginSubcases() - .combine('vbCount', [2, 3, kMaxVertexBuffers]) + .combine('vbCountVariant', [ + { mult: 0, add: 2 }, + { mult: 0, add: 3 }, + { mult: 1, add: 0 }, + ]) .combine('additionalVBOffset', [0, 4, 120]) ) .fn(t => { - const { format, vbCount, additionalVBOffset } = t.params; + const { format, vbCountVariant, additionalVBOffset } = t.params; + const vbCount = t.makeLimitVariant('maxVertexBuffers', vbCountVariant); const kVertexCount = 20; const kInstanceCount = 1; const formatInfo = kVertexFormatInfo[format]; @@ -830,11 +862,16 @@ g.test('vertex_buffer_used_multiple_times_interleaved') u // .combine('format', kVertexFormats) .beginSubcases() - .combine('vbCount', [2, 3, kMaxVertexBuffers]) + .combine('vbCountVariant', [ + { mult: 0, add: 2 }, + { mult: 0, add: 3 }, + { mult: 1, add: 0 }, + ]) .combine('additionalVBOffset', [0, 4, 120]) ) .fn(t => { - const { format, vbCount, additionalVBOffset } = t.params; + const { format, vbCountVariant, additionalVBOffset } = t.params; + const vbCount = t.makeLimitVariant('maxVertexBuffers', vbCountVariant); const kVertexCount = 20; const kInstanceCount = 1; const formatInfo = kVertexFormatInfo[format]; @@ -910,13 +947,17 @@ g.test('max_buffers_and_attribs') .params(u => u.combine('format', kVertexFormats)) .fn(t => { const { format } = t.params; - const attributesPerBuffer = Math.ceil(kMaxVertexAttributes / kMaxVertexBuffers); + // In compat mode, @builtin(vertex_index) and @builtin(instance_index) each take an attribute + const maxVertexBuffers = t.device.limits.maxVertexBuffers; + const deviceMaxVertexAttributes = t.device.limits.maxVertexAttributes; + const maxVertexAttributes = deviceMaxVertexAttributes - (t.isCompatibility ? 2 : 0); + const attributesPerBuffer = Math.ceil(maxVertexAttributes / maxVertexBuffers); let attributesEmitted = 0; const state = []; - for (let i = 0; i < kMaxVertexBuffers; i++) { + for (let i = 0; i < maxVertexBuffers; i++) { const attributes = []; - for (let j = 0; j < attributesPerBuffer && attributesEmitted < kMaxVertexAttributes; j++) { + for (let j = 0; j < attributesPerBuffer && attributesEmitted < maxVertexAttributes; j++) { attributes.push({ format, offset: 0, shaderLocation: attributesEmitted }); attributesEmitted++; } @@ -941,25 +982,26 @@ g.test('array_stride_zero') .combine('format', kVertexFormats) .beginSubcases() .combine('stepMode', ['vertex', 'instance']) - .expand('offset', p => { + .expand('offsetVariant', p => { const formatInfo = kVertexFormatInfo[p.format]; const formatSize = formatInfo.bytesPerComponent * formatInfo.componentCount; - return new Set([ - 0, - 4, - 8, - formatSize, - formatSize * 2, - kMaxVertexBufferArrayStride / 2, - kMaxVertexBufferArrayStride - formatSize - 4, - kMaxVertexBufferArrayStride - formatSize - 8, - kMaxVertexBufferArrayStride - formatSize, - kMaxVertexBufferArrayStride - formatSize * 2, + return filterUniqueValueTestVariants([ + { mult: 0, add: 0 }, + { mult: 0, add: 4 }, + { mult: 0, add: 8 }, + { mult: 0, add: formatSize }, + { mult: 0, add: formatSize * 2 }, + { mult: 0.5, add: 0 }, + { mult: 1, add: -formatSize - 4 }, + { mult: 1, add: -formatSize - 8 }, + { mult: 1, add: -formatSize }, + { mult: 1, add: -formatSize * 2 }, ]); }) ) .fn(t => { - const { format, stepMode, offset } = t.params; + const { format, stepMode, offsetVariant } = t.params; + const offset = t.makeLimitVariant('maxVertexBufferArrayStride', offsetVariant); const kCount = 10; // Create the stride 0 part of the test, first by faking a single vertex being drawn and @@ -1024,7 +1066,7 @@ g.test('discontiguous_location_and_attribs') .fn(t => { t.runTest([ { - slot: kMaxVertexBuffers - 1, + slot: t.device.limits.maxVertexBuffers - 1, arrayStride: 4, stepMode: 'vertex', attributes: [ @@ -1037,7 +1079,13 @@ g.test('discontiguous_location_and_attribs') arrayStride: 16, stepMode: 'instance', vbOffset: 1000, - attributes: [{ format: 'uint32x4', offset: 0, shaderLocation: kMaxVertexAttributes - 1 }], + attributes: [ + { + format: 'uint32x4', + offset: 0, + shaderLocation: t.device.limits.maxVertexAttributes - 1, + }, + ], }, ]); }); @@ -1051,8 +1099,10 @@ g.test('overlapping_attributes') .fn(t => { const { format } = t.params; + // In compat mode, @builtin(vertex_index) and @builtin(instance_index) each take an attribute + const maxVertexAttributes = t.device.limits.maxVertexAttributes - (t.isCompatibility ? 2 : 0); const attributes = []; - for (let i = 0; i < kMaxVertexAttributes; i++) { + for (let i = 0; i < maxVertexAttributes; i++) { attributes.push({ format, offset: 0, shaderLocation: i }); } diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/buffer/create.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/buffer/create.spec.js index c8a39346edf..0a5a695097e 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/buffer/create.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/buffer/create.spec.js @@ -9,7 +9,6 @@ import { kAllBufferUsageBits, kBufferSizeAlignment, kBufferUsages, - kLimitInfo, } from '../../../capability_info.js'; import { GPUConst } from '../../../constants.js'; import { kMaxSafeMultipleOf8 } from '../../../util/math.js'; @@ -47,18 +46,11 @@ g.test('size') g.test('limit') .desc('Test buffer size is validated against maxBufferSize.') - .params(u => - u - .beginSubcases() - .combine('size', [ - kLimitInfo.maxBufferSize.default - 1, - kLimitInfo.maxBufferSize.default, - kLimitInfo.maxBufferSize.default + 1, - ]) - ) + .params(u => u.beginSubcases().combine('sizeAddition', [-1, 0, +1])) .fn(t => { - const { size } = t.params; - const isValid = size <= kLimitInfo.maxBufferSize.default; + const { sizeAddition } = t.params; + const size = t.makeLimitVariant('maxBufferSize', { mult: 1, add: sizeAddition }); + const isValid = size <= t.device.limits.maxBufferSize; const usage = BufferUsage.COPY_SRC; t.expectGPUError('validation', () => t.device.createBuffer({ size, usage }), !isValid); }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/limit_utils.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/limit_utils.js index 56c58f43d79..350cb07a753 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/limit_utils.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/limit_utils.js @@ -4,10 +4,8 @@ import { makeTestGroup } from '../../../../../common/framework/test_group.js'; import { getGPU } from '../../../../../common/util/navigator_gpu.js'; import { assert, range, reorder } from '../../../../../common/util/util.js'; -import { kLimitInfo } from '../../../../capability_info.js'; -import { kTextureFormatInfo } from '../../../../format_info.js'; +import { getDefaultLimitsForAdapter } from '../../../../capability_info.js'; import { GPUTestBase } from '../../../../gpu_test.js'; -import { align } from '../../../../util/math.js'; export const kCreatePipelineTypes = [ 'createRenderPipeline', @@ -65,19 +63,6 @@ function getWGSLBindings(order, bindGroupTest, storageDefinitionWGSLSnippetFn, n ).join('\n '); } -/** - * Given an array of GPUColorTargetState return the number of bytes per sample - */ -export function computeBytesPerSample(targets) { - let bytesPerSample = 0; - for (const { format } of targets) { - const info = kTextureFormatInfo[format]; - const alignedBytesPerSample = align(bytesPerSample, info.colorRender.alignment); - bytesPerSample = alignedBytesPerSample + info.colorRender.byteCost; - } - return bytesPerSample; -} - export function getPerStageWGSLForBindingCombinationImpl( bindingCombination, order, @@ -251,8 +236,9 @@ export const kMinimumLimitValueTests = [ 'underMinimum', ]; -export function getDefaultLimit(limit) { - return kLimitInfo[limit].default; +export function getDefaultLimitForAdapter(adapter, limit) { + const limitInfo = getDefaultLimitsForAdapter(adapter); + return limitInfo[limit].default; } const kMinimumLimits = new Set([ @@ -283,7 +269,7 @@ export class LimitTestsImpl extends GPUTestBase { const gpu = getGPU(this.rec); this._adapter = await gpu.requestAdapter(); const limit = this.limit; - this.defaultLimit = getDefaultLimit(limit); + this.defaultLimit = getDefaultLimitForAdapter(this.adapter, limit); this.adapterLimit = this.adapter.limits[limit]; assert(!Number.isNaN(this.defaultLimit)); assert(!Number.isNaN(this.adapterLimit)); @@ -311,7 +297,7 @@ export class LimitTestsImpl extends GPUTestBase { getDefaultOrAdapterLimit(limit, limitMode) { switch (limitMode) { case 'defaultLimit': - return getDefaultLimit(limit); + return getDefaultLimitForAdapter(this.adapter, limit); case 'adapterLimit': return this.adapter.limits[limit]; } @@ -332,7 +318,9 @@ export class LimitTestsImpl extends GPUTestBase { for (const [extraLimitStr, limitMode] of Object.entries(extraLimits)) { const extraLimit = extraLimitStr; requiredLimits[extraLimit] = - limitMode === 'defaultLimit' ? getDefaultLimit(extraLimit) : adapter.limits[extraLimit]; + limitMode === 'defaultLimit' + ? getDefaultLimitForAdapter(adapter, extraLimit) + : adapter.limits[extraLimit]; } } diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxColorAttachments.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxColorAttachments.spec.js index 38520d83944..7c291765f80 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxColorAttachments.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxColorAttachments.spec.js @@ -1,7 +1,8 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { range } from '../../../../../common/util/util.js'; -import { kMaximumLimitBaseParams, getDefaultLimit, makeLimitTestGroup } from './limit_utils.js'; +import { kMaxColorAttachmentsToTest } from '../../../../capability_info.js'; +import { kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js'; function getPipelineDescriptor(device, testValue) { const code = ` @@ -106,9 +107,19 @@ g.test('validate,maxColorAttachmentBytesPerSample') .desc(`Test ${limit} against maxColorAttachmentBytesPerSample`) .fn(t => { const { adapter, defaultLimit, adapterLimit: maximumLimit } = t; - const minColorAttachmentBytesPerSample = getDefaultLimit('maxColorAttachmentBytesPerSample'); + const minColorAttachmentBytesPerSample = t.getDefaultLimit('maxColorAttachmentBytesPerSample'); // The smallest attachment is 1 byte // so make sure maxColorAttachments < maxColorAttachmentBytesPerSample t.expect(defaultLimit <= minColorAttachmentBytesPerSample); t.expect(maximumLimit <= adapter.limits.maxColorAttachmentBytesPerSample); }); + +g.test('validate,kMaxColorAttachmentsToTest') + .desc( + ` + Tests that kMaxColorAttachmentsToTest is large enough to test the limits of this device + ` + ) + .fn(t => { + t.expect(t.adapter.limits.maxColorAttachments <= kMaxColorAttachmentsToTest); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxComputeInvocationsPerWorkgroup.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxComputeInvocationsPerWorkgroup.spec.js index 68f19bd17ec..e68ebf49a0a 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxComputeInvocationsPerWorkgroup.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxComputeInvocationsPerWorkgroup.spec.js @@ -1,10 +1,6 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { - kMaximumLimitBaseParams, - getDefaultLimit, - makeLimitTestGroup, -} from './limit_utils.js'; + **/ import { kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js'; /** * Given a 3 dimensional size, and a limit, compute @@ -71,11 +67,11 @@ function getDeviceLimitToRequest(limitValueTest, defaultLimit, maximumLimit) { } } -function getTestWorkgroupSize(testValueName, requestedLimit) { +function getTestWorkgroupSize(t, testValueName, requestedLimit) { const maxDimensions = [ - getDefaultLimit('maxComputeWorkgroupSizeX'), - getDefaultLimit('maxComputeWorkgroupSizeY'), - getDefaultLimit('maxComputeWorkgroupSizeZ'), + t.getDefaultLimit('maxComputeWorkgroupSizeX'), + t.getDefaultLimit('maxComputeWorkgroupSizeY'), + t.getDefaultLimit('maxComputeWorkgroupSizeZ'), ]; switch (testValueName) { @@ -87,13 +83,14 @@ function getTestWorkgroupSize(testValueName, requestedLimit) { } function getDeviceLimitToRequestAndValueToTest( + t, limitValueTest, testValueName, defaultLimit, maximumLimit ) { const requestedLimit = getDeviceLimitToRequest(limitValueTest, defaultLimit, maximumLimit); - const workgroupSize = getTestWorkgroupSize(testValueName, requestedLimit); + const workgroupSize = getTestWorkgroupSize(t, testValueName, requestedLimit); return { requestedLimit, workgroupSize, @@ -111,6 +108,7 @@ g.test('createComputePipeline,at_over') const { defaultLimit, adapterLimit: maximumLimit } = t; const { requestedLimit, workgroupSize } = getDeviceLimitToRequestAndValueToTest( + t, limitTest, testValueName, defaultLimit, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicStorageBuffersPerPipelineLayout.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicStorageBuffersPerPipelineLayout.spec.js index 4b2eb04ae29..db8491c888c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicStorageBuffersPerPipelineLayout.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicStorageBuffersPerPipelineLayout.spec.js @@ -22,6 +22,7 @@ g.test('createBindGroupLayout,at_over') limitTest, testValueName, async ({ device, testValue, shouldError }) => { + shouldError ||= testValue > t.device.limits.maxStorageBuffersPerShaderStage; await t.expectValidationError(() => { device.createBindGroupLayout({ entries: range(testValue, i => ({ diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.js index 81d7350ab53..546a3e1c955 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxDynamicUniformBuffersPerPipelineLayout.spec.js @@ -26,6 +26,7 @@ g.test('createBindGroupLayout,at_over') limitTest, testValueName, async ({ device, testValue, shouldError }) => { + shouldError ||= testValue > t.device.limits.maxUniformBuffersPerShaderStage; await t.expectValidationError(() => { device.createBindGroupLayout({ entries: range(testValue, i => ({ diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxInterStageShaderComponents.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxInterStageShaderComponents.spec.js index a8c3bb219d6..d156fc326c5 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxInterStageShaderComponents.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxInterStageShaderComponents.spec.js @@ -112,6 +112,11 @@ g.test('createRenderPipeline,at_over') .combine('sampleMaskIn', [false, true]) .combine('sampleMaskOut', [false, true]) ) + .beforeAllSubcases(t => { + if (t.isCompatibility && (t.params.sampleMaskIn || t.params.sampleMaskOut)) { + t.skip('sample_mask not supported in compatibility mode'); + } + }) .fn(async t => { const { limitTest, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBufferBindingSize.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBufferBindingSize.spec.js index 836b54827a6..b49ba5747c3 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBufferBindingSize.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxStorageBufferBindingSize.spec.js @@ -1,7 +1,7 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { align, roundDown } from '../../../../util/math.js'; -import { kMaximumLimitBaseParams, makeLimitTestGroup, getDefaultLimit } from './limit_utils.js'; +import { kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js'; const kBufferParts = ['wholeBuffer', 'biggerBufferWithOffset']; @@ -139,6 +139,6 @@ g.test('validate,maxBufferSize') .desc(`Test that ${limit} <= maxBufferSize`) .fn(t => { const { adapter, defaultLimit, adapterLimit } = t; - t.expect(defaultLimit <= getDefaultLimit('maxBufferSize')); + t.expect(defaultLimit <= t.getDefaultLimit('maxBufferSize')); t.expect(adapterLimit <= adapter.limits.maxBufferSize); }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxUniformBufferBindingSize.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxUniformBufferBindingSize.spec.js index af7634f04cf..f8c2bfe9871 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxUniformBufferBindingSize.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/capability_checks/limits/maxUniformBufferBindingSize.spec.js @@ -1,11 +1,6 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { - getDefaultLimit, - kMaximumLimitBaseParams, - makeLimitTestGroup, -} from './limit_utils.js'; - + **/ import { kMaximumLimitBaseParams, makeLimitTestGroup } from './limit_utils.js'; const kBufferParts = ['wholeBuffer', 'biggerBufferWithOffset']; function getSizeAndOffsetForBufferPart(device, bufferPart, size) { @@ -91,6 +86,6 @@ g.test('validate,maxBufferSize') .desc(`Test that ${limit} <= maxBufferSize`) .fn(t => { const { adapter, defaultLimit, adapterLimit } = t; - t.expect(defaultLimit <= getDefaultLimit('maxBufferSize')); + t.expect(defaultLimit <= t.getDefaultLimit('maxBufferSize')); t.expect(adapterLimit <= adapter.limits.maxBufferSize); }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js index 0a6f32322ea..ba0ea041c23 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js @@ -6,7 +6,7 @@ TODO: Ensure sure tests cover all createBindGroup validation rules. `; import { makeTestGroup } from '../../../common/framework/test_group.js'; -import { assert, unreachable } from '../../../common/util/util.js'; +import { assert, makeValueTestVariant, unreachable } from '../../../common/util/util.js'; import { allBindingEntries, bindingTypeInfo, @@ -16,7 +16,6 @@ import { kBufferBindingTypes, kBufferUsages, kCompareFunctions, - kLimitInfo, kSamplerBindingTypes, kTextureUsages, kTextureViewDimensions, @@ -316,6 +315,8 @@ g.test('texture_must_have_correct_dimension') dimension: getTextureDimensionFromView(dimension), }); + t.skipIfTextureViewDimensionNotSupported(viewDimension, dimension); + const shouldError = viewDimension !== dimension; const textureView = texture.createView({ dimension }); @@ -884,24 +885,21 @@ g.test('buffer,resource_offset') u // .combine('type', kBufferBindingTypes) .beginSubcases() - .expand('offset', ({ type }) => - type === 'uniform' - ? [ - kLimitInfo.minUniformBufferOffsetAlignment.default, - kLimitInfo.minUniformBufferOffsetAlignment.default * 0.5, - kLimitInfo.minUniformBufferOffsetAlignment.default * 1.5, - kLimitInfo.minUniformBufferOffsetAlignment.default + 2, - ] - : [ - kLimitInfo.minStorageBufferOffsetAlignment.default, - kLimitInfo.minStorageBufferOffsetAlignment.default * 0.5, - kLimitInfo.minStorageBufferOffsetAlignment.default * 1.5, - kLimitInfo.minStorageBufferOffsetAlignment.default + 2, - ] - ) + .combine('offsetAddMult', [ + { add: 0, mult: 0 }, + { add: 0, mult: 0.5 }, + { add: 0, mult: 1.5 }, + { add: 2, mult: 0 }, + ]) ) .fn(t => { - const { type, offset } = t.params; + const { type, offsetAddMult } = t.params; + const minAlignment = + t.device.limits[ + type === 'uniform' ? 'minUniformBufferOffsetAlignment' : 'minStorageBufferOffsetAlignment' + ]; + + const offset = makeValueTestVariant(minAlignment, offsetAddMult); const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ @@ -913,14 +911,8 @@ g.test('buffer,resource_offset') ], }); - let usage, isValid; - if (type === 'uniform') { - usage = GPUBufferUsage.UNIFORM; - isValid = offset % kLimitInfo.minUniformBufferOffsetAlignment.default === 0; - } else { - usage = GPUBufferUsage.STORAGE; - isValid = offset % kLimitInfo.minStorageBufferOffsetAlignment.default === 0; - } + const usage = type === 'uniform' ? GPUBufferUsage.UNIFORM : GPUBufferUsage.STORAGE; + const isValid = offset % minAlignment === 0; const buffer = t.device.createBuffer({ size: 1024, @@ -949,22 +941,24 @@ g.test('buffer,resource_binding_size') .beginSubcases() // Test a size of 1 (for uniform buffer) or 4 (for storage and read-only storage buffer) // then values just within and just above the limit. - .expand('bindingSize', ({ type }) => - type === 'uniform' - ? [ - 1, - kLimitInfo.maxUniformBufferBindingSize.default, - kLimitInfo.maxUniformBufferBindingSize.default + 1, - ] - : [ - 4, - kLimitInfo.maxStorageBufferBindingSize.default, - kLimitInfo.maxStorageBufferBindingSize.default + 4, - ] - ) + .combine('bindingSize', [ + { base: 1, limit: 0 }, + { base: 0, limit: 1 }, + { base: 1, limit: 1 }, + ]) ) .fn(t => { - const { type, bindingSize } = t.params; + const { + type, + bindingSize: { base, limit }, + } = t.params; + const mult = type === 'uniform' ? 1 : 4; + const maxBindingSize = + t.device.limits[ + type === 'uniform' ? 'maxUniformBufferBindingSize' : 'maxStorageBufferBindingSize' + ]; + + const bindingSize = base * mult + maxBindingSize * limit; const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ @@ -976,17 +970,12 @@ g.test('buffer,resource_binding_size') ], }); - let usage, isValid; - if (type === 'uniform') { - usage = GPUBufferUsage.UNIFORM; - isValid = bindingSize <= kLimitInfo.maxUniformBufferBindingSize.default; - } else { - usage = GPUBufferUsage.STORAGE; - isValid = bindingSize <= kLimitInfo.maxStorageBufferBindingSize.default; - } + const usage = type === 'uniform' ? GPUBufferUsage.UNIFORM : GPUBufferUsage.STORAGE; + const isValid = bindingSize <= maxBindingSize; + // MAINTENANCE_TODO: Allocating the max size seems likely to fail. Refactor test. const buffer = t.device.createBuffer({ - size: kLimitInfo.maxStorageBufferBindingSize.default, + size: maxBindingSize, usage, }); @@ -1009,26 +998,19 @@ g.test('buffer,effective_buffer_binding_size') u .combine('type', kBufferBindingTypes) .beginSubcases() - .expand('offset', ({ type }) => - type === 'uniform' - ? [0, kLimitInfo.minUniformBufferOffsetAlignment.default] - : [0, kLimitInfo.minStorageBufferOffsetAlignment.default] - ) - .expand('bufferSize', ({ type }) => - type === 'uniform' - ? [ - kLimitInfo.minUniformBufferOffsetAlignment.default + 8, - kLimitInfo.minUniformBufferOffsetAlignment.default + 10, - ] - : [ - kLimitInfo.minStorageBufferOffsetAlignment.default + 8, - kLimitInfo.minStorageBufferOffsetAlignment.default + 10, - ] - ) + .combine('offsetMult', [0, 1]) + .combine('bufferSizeAddition', [8, 10]) .combine('bindingSize', [undefined, 2, 4, 6]) ) .fn(t => { - const { type, offset, bufferSize, bindingSize } = t.params; + const { type, offsetMult, bufferSizeAddition, bindingSize } = t.params; + const minAlignment = + t.device.limits[ + type === 'uniform' ? 'minUniformBufferOffsetAlignment' : 'minStorageBufferOffsetAlignment' + ]; + + const offset = minAlignment * offsetMult; + const bufferSize = minAlignment + bufferSizeAddition; const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js index 1693e7646a4..5c9994833ae 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js @@ -8,7 +8,6 @@ TODO: make sure tests are complete. import { kUnitCaseParamsBuilder } from '../../../common/framework/params_builder.js'; import { makeTestGroup } from '../../../common/framework/test_group.js'; import { - kLimitInfo, kShaderStages, kShaderStageCombinations, kStorageTextureAccessValues, @@ -63,27 +62,26 @@ g.test('maximum_binding_limit') ` ) .paramsSubcasesOnly(u => - u // - .combine('binding', [ - 1, - 4, - 8, - 256, - kLimitInfo.maxBindingsPerBindGroup.default - 1, - kLimitInfo.maxBindingsPerBindGroup.default, - ]) + u.combine('bindingVariant', [1, 4, 8, 256, 'default', 'default-minus-one']) ) .fn(t => { - const { binding } = t.params; + const { bindingVariant } = t.params; const entries = []; + const binding = + bindingVariant === 'default' + ? t.device.limits.maxBindingsPerBindGroup + : bindingVariant === 'default-minus-one' + ? t.device.limits.maxBindingsPerBindGroup - 1 + : bindingVariant; + entries.push({ binding, visibility: GPUShaderStage.COMPUTE, buffer: { type: 'storage' }, }); - const success = binding < kLimitInfo.maxBindingsPerBindGroup.default; + const success = binding < t.device.limits.maxBindingsPerBindGroup; t.expectValidationError(() => { t.device.createBindGroupLayout({ @@ -234,7 +232,10 @@ g.test('max_dynamic_buffers') const { type, extraDynamicBuffers, staticBuffers } = t.params; const info = bufferBindingTypeInfo({ type }); - const dynamicBufferCount = info.perPipelineLimitClass.maxDynamic + extraDynamicBuffers; + const limitName = info.perPipelineLimitClass.maxDynamicLimit; + const bufferCount = limitName ? t.getDefaultLimit(limitName) : 0; + const dynamicBufferCount = bufferCount + extraDynamicBuffers; + const perStageLimit = t.getDefaultLimit(info.perStageLimitClass.maxLimit); const entries = []; for (let i = 0; i < dynamicBufferCount; i++) { @@ -259,7 +260,7 @@ g.test('max_dynamic_buffers') t.expectValidationError(() => { t.device.createBindGroupLayout(descriptor); - }, extraDynamicBuffers > 0); + }, extraDynamicBuffers > 0 || entries.length > perStageLimit); }); /** @@ -297,7 +298,7 @@ const kMaxResourcesCases = kUnitCaseParamsBuilder .combine('extraVisibility', kShaderStages) .filter(p => (bindingTypeInfo(p.extraEntry).validStages & p.extraVisibility) !== 0); -// Should never fail unless kLimitInfo.maxBindingsPerBindGroup.default is exceeded, because the validation for +// Should never fail unless limitInfo.maxBindingsPerBindGroup.default is exceeded, because the validation for // resources-of-type-per-stage is in pipeline layout creation. g.test('max_resources_per_stage,in_bind_group_layout') .desc( @@ -313,7 +314,7 @@ g.test('max_resources_per_stage,in_bind_group_layout') .fn(t => { const { maxedEntry, extraEntry, maxedVisibility, extraVisibility } = t.params; const maxedTypeInfo = bindingTypeInfo(maxedEntry); - const maxedCount = maxedTypeInfo.perStageLimitClass.max; + const maxedCount = t.getDefaultLimit(maxedTypeInfo.perStageLimitClass.maxLimit); const extraTypeInfo = bindingTypeInfo(extraEntry); const maxResourceBindings = []; @@ -364,7 +365,7 @@ g.test('max_resources_per_stage,in_pipeline_layout') .fn(t => { const { maxedEntry, extraEntry, maxedVisibility, extraVisibility } = t.params; const maxedTypeInfo = bindingTypeInfo(maxedEntry); - const maxedCount = maxedTypeInfo.perStageLimitClass.max; + const maxedCount = t.getDefaultLimit(maxedTypeInfo.perStageLimitClass.maxLimit); const extraTypeInfo = bindingTypeInfo(extraEntry); const maxResourceBindings = []; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js index 4e08be8513a..507d14c0d83 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js @@ -34,7 +34,13 @@ g.test('number_of_dynamic_buffers_exceeds_the_maximum_value') ) .fn(t => { const { type, visibility } = t.params; - const { maxDynamic } = bufferBindingTypeInfo({ type }).perPipelineLimitClass; + const info = bufferBindingTypeInfo({ type }); + const { maxDynamicLimit } = info.perPipelineLimitClass; + const perStageLimit = t.getDefaultLimit(info.perStageLimitClass.maxLimit); + const maxDynamic = Math.min( + maxDynamicLimit ? t.getDefaultLimit(maxDynamicLimit) : 0, + perStageLimit + ); const maxDynamicBufferBindings = []; for (let binding = 0; binding < maxDynamic; binding++) { @@ -53,15 +59,17 @@ g.test('number_of_dynamic_buffers_exceeds_the_maximum_value') entries: [{ binding: 0, visibility, buffer: { type, hasDynamicOffset: false } }], }; - const goodPipelineLayoutDescriptor = { - bindGroupLayouts: [ - maxDynamicBufferBindGroupLayout, - t.device.createBindGroupLayout(goodDescriptor), - ], - }; + if (perStageLimit > maxDynamic) { + const goodPipelineLayoutDescriptor = { + bindGroupLayouts: [ + maxDynamicBufferBindGroupLayout, + t.device.createBindGroupLayout(goodDescriptor), + ], + }; - // Control case - t.device.createPipelineLayout(goodPipelineLayoutDescriptor); + // Control case + t.device.createPipelineLayout(goodPipelineLayoutDescriptor); + } // Check dynamic buffers exceed maximum in pipeline layout. const badDescriptor = clone(goodDescriptor); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createTexture.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createTexture.spec.js index baf9a655d76..b89f528d9a5 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createTexture.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createTexture.spec.js @@ -3,8 +3,8 @@ **/ export const description = `createTexture validation tests.`; import { SkipTestCase } from '../../../common/framework/fixture.js'; import { makeTestGroup } from '../../../common/framework/test_group.js'; -import { assert } from '../../../common/util/util.js'; -import { kTextureDimensions, kTextureUsages, kLimitInfo } from '../../capability_info.js'; +import { assert, makeValueTestVariant } from '../../../common/util/util.js'; +import { kTextureDimensions, kTextureUsages } from '../../capability_info.js'; import { GPUConst } from '../../constants.js'; import { kTextureFormats, @@ -105,6 +105,7 @@ g.test('dimension_type_and_format_compatibility') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -142,6 +143,7 @@ g.test('mipLevelCount,format') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -273,6 +275,7 @@ g.test('sampleCount,various_sampleCount_with_all_formats') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -345,6 +348,7 @@ g.test('sampleCount,valid_sampleCount_with_other_parameter_varies') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -423,6 +427,7 @@ g.test('texture_size,default_value_and_smallest_size,uncompressed_format') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -488,10 +493,10 @@ g.test('texture_size,1d_texture') // Compressed and depth-stencil textures are invalid for 1D. .combine('format', kRegularTextureFormats) .beginSubcases() - .combine('width', [ - kLimitInfo.maxTextureDimension1D.default - 1, - kLimitInfo.maxTextureDimension1D.default, - kLimitInfo.maxTextureDimension1D.default + 1, + .combine('widthVariant', [ + { mult: 1, add: -1 }, + { mult: 1, add: 0 }, + { mult: 1, add: 1 }, ]) .combine('height', [1, 2]) .combine('depthOrArrayLayers', [1, 2]) @@ -499,10 +504,12 @@ g.test('texture_size,1d_texture') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { - const { format, width, height, depthOrArrayLayers } = t.params; + const { format, widthVariant, height, depthOrArrayLayers } = t.params; + const width = t.makeLimitVariant('maxTextureDimension1D', widthVariant); const descriptor = { size: [width, height, depthOrArrayLayers], @@ -512,7 +519,7 @@ g.test('texture_size,1d_texture') }; const success = - width <= kLimitInfo.maxTextureDimension1D.default && height === 1 && depthOrArrayLayers === 1; + width <= t.device.limits.maxTextureDimension1D && height === 1 && depthOrArrayLayers === 1; t.expectValidationError(() => { t.device.createTexture(descriptor); @@ -525,28 +532,70 @@ g.test('texture_size,2d_texture,uncompressed_format') u .combine('dimension', [undefined, '2d']) .combine('format', kUncompressedTextureFormats) - .combine('size', [ + .combine('sizeVariant', [ // Test the bound of width - [kLimitInfo.maxTextureDimension2D.default - 1, 1, 1], - [kLimitInfo.maxTextureDimension2D.default, 1, 1], - [kLimitInfo.maxTextureDimension2D.default + 1, 1, 1], + [ + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 1, add: 1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], // Test the bound of height - [1, kLimitInfo.maxTextureDimension2D.default - 1, 1], - [1, kLimitInfo.maxTextureDimension2D.default, 1], - [1, kLimitInfo.maxTextureDimension2D.default + 1, 1], + [ + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 1, add: 1 }, + { mult: 0, add: 1 }, + ], // Test the bound of array layers - [1, 1, kLimitInfo.maxTextureArrayLayers.default - 1], - [1, 1, kLimitInfo.maxTextureArrayLayers.default], - [1, 1, kLimitInfo.maxTextureArrayLayers.default + 1], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: 1 }, + ], ]) ) .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { - const { dimension, format, size } = t.params; + const { dimension, format, sizeVariant } = t.params; + const size = [ + t.device.limits.maxTextureDimension2D, + t.device.limits.maxTextureDimension2D, + t.device.limits.maxTextureArrayLayers, + ].map((limit, ndx) => makeValueTestVariant(limit, sizeVariant[ndx])); const descriptor = { size, @@ -556,9 +605,9 @@ g.test('texture_size,2d_texture,uncompressed_format') }; const success = - size[0] <= kLimitInfo.maxTextureDimension2D.default && - size[1] <= kLimitInfo.maxTextureDimension2D.default && - size[2] <= kLimitInfo.maxTextureArrayLayers.default; + size[0] <= t.device.limits.maxTextureDimension2D && + size[1] <= t.device.limits.maxTextureDimension2D && + size[2] <= t.device.limits.maxTextureArrayLayers; t.expectValidationError(() => { t.device.createTexture(descriptor); @@ -571,40 +620,179 @@ g.test('texture_size,2d_texture,compressed_format') u .combine('dimension', [undefined, '2d']) .combine('format', kCompressedTextureFormats) - .expand('size', p => { + .expand('sizeVariant', p => { const { blockWidth, blockHeight } = kTextureFormatInfo[p.format]; return [ // Test the bound of width - [kLimitInfo.maxTextureDimension2D.default - 1, 1, 1], - [kLimitInfo.maxTextureDimension2D.default - blockWidth, 1, 1], - [kLimitInfo.maxTextureDimension2D.default - blockWidth, blockHeight, 1], - [kLimitInfo.maxTextureDimension2D.default, 1, 1], - [kLimitInfo.maxTextureDimension2D.default, blockHeight, 1], - [kLimitInfo.maxTextureDimension2D.default + 1, 1, 1], - [kLimitInfo.maxTextureDimension2D.default + blockWidth, 1, 1], - [kLimitInfo.maxTextureDimension2D.default + blockWidth, blockHeight, 1], + [ + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: -blockWidth }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: -blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: 0 }, + { mult: 0, add: blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: 1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 0, add: 1 }, + ], + // Test the bound of height - [1, kLimitInfo.maxTextureDimension2D.default - 1, 1], - [1, kLimitInfo.maxTextureDimension2D.default - blockHeight, 1], - [blockWidth, kLimitInfo.maxTextureDimension2D.default - blockHeight, 1], - [1, kLimitInfo.maxTextureDimension2D.default, 1], - [blockWidth, kLimitInfo.maxTextureDimension2D.default, 1], - [1, kLimitInfo.maxTextureDimension2D.default + 1, 1], - [1, kLimitInfo.maxTextureDimension2D.default + blockWidth, 1], - [blockWidth, kLimitInfo.maxTextureDimension2D.default + blockHeight, 1], + [ + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: -blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 1, add: -blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: +blockWidth }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 1, add: +blockHeight }, + { mult: 0, add: 1 }, + ], + // Test the bound of array layers - [1, 1, kLimitInfo.maxTextureArrayLayers.default - 1], - [blockWidth, 1, kLimitInfo.maxTextureArrayLayers.default - 1], - [1, blockHeight, kLimitInfo.maxTextureArrayLayers.default - 1], - [blockWidth, blockHeight, kLimitInfo.maxTextureArrayLayers.default - 1], - [1, 1, kLimitInfo.maxTextureArrayLayers.default], - [blockWidth, 1, kLimitInfo.maxTextureArrayLayers.default], - [1, blockHeight, kLimitInfo.maxTextureArrayLayers.default], - [blockWidth, blockHeight, kLimitInfo.maxTextureArrayLayers.default], - [1, 1, kLimitInfo.maxTextureArrayLayers.default + 1], - [blockWidth, 1, kLimitInfo.maxTextureArrayLayers.default + 1], - [1, blockHeight, kLimitInfo.maxTextureArrayLayers.default + 1], - [blockWidth, blockHeight, kLimitInfo.maxTextureArrayLayers.default + 1], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: blockHeight }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: blockHeight }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: blockHeight }, + { mult: 1, add: +1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 1, add: +1 }, + ], ]; }) ) @@ -614,8 +802,13 @@ g.test('texture_size,2d_texture,compressed_format') t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { - const { dimension, format, size } = t.params; + const { dimension, format, sizeVariant } = t.params; const info = kTextureFormatInfo[format]; + const size = [ + t.device.limits.maxTextureDimension2D, + t.device.limits.maxTextureDimension2D, + t.device.limits.maxTextureArrayLayers, + ].map((limit, ndx) => makeValueTestVariant(limit, sizeVariant[ndx])); const descriptor = { size, @@ -627,9 +820,9 @@ g.test('texture_size,2d_texture,compressed_format') const success = size[0] % info.blockWidth === 0 && size[1] % info.blockHeight === 0 && - size[0] <= kLimitInfo.maxTextureDimension2D.default && - size[1] <= kLimitInfo.maxTextureDimension2D.default && - size[2] <= kLimitInfo.maxTextureArrayLayers.default; + size[0] <= t.device.limits.maxTextureDimension2D && + size[1] <= t.device.limits.maxTextureDimension2D && + size[2] <= t.device.limits.maxTextureArrayLayers; t.expectValidationError(() => { t.device.createTexture(descriptor); @@ -644,28 +837,67 @@ g.test('texture_size,3d_texture,uncompressed_format') u // .combine('format', kRegularTextureFormats) .beginSubcases() - .combine('size', [ + .combine('sizeVariant', [ // Test the bound of width - [kLimitInfo.maxTextureDimension3D.default - 1, 1, 1], - [kLimitInfo.maxTextureDimension3D.default, 1, 1], - [kLimitInfo.maxTextureDimension3D.default + 1, 1, 1], + [ + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 1, add: +1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], // Test the bound of height - [1, kLimitInfo.maxTextureDimension3D.default - 1, 1], - [1, kLimitInfo.maxTextureDimension3D.default, 1], - [1, kLimitInfo.maxTextureDimension3D.default + 1, 1], + [ + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + { mult: 0, add: 1 }, + ], // Test the bound of depth - [1, 1, kLimitInfo.maxTextureDimension3D.default - 1], - [1, 1, kLimitInfo.maxTextureDimension3D.default], - [1, 1, kLimitInfo.maxTextureDimension3D.default + 1], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + ], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + ], ]) ) .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { - const { format, size } = t.params; + const { format, sizeVariant } = t.params; + const maxTextureDimension3D = t.device.limits.maxTextureDimension3D; + const size = sizeVariant.map(variant => t.makeLimitVariant('maxTextureDimension3D', variant)); const descriptor = { size, @@ -675,9 +907,9 @@ g.test('texture_size,3d_texture,uncompressed_format') }; const success = - size[0] <= kLimitInfo.maxTextureDimension3D.default && - size[1] <= kLimitInfo.maxTextureDimension3D.default && - size[2] <= kLimitInfo.maxTextureDimension3D.default; + size[0] <= maxTextureDimension3D && + size[1] <= maxTextureDimension3D && + size[2] <= maxTextureDimension3D; t.expectValidationError(() => { t.device.createTexture(descriptor); @@ -690,40 +922,179 @@ g.test('texture_size,3d_texture,compressed_format') u // .combine('format', kCompressedTextureFormats) .beginSubcases() - .expand('size', p => { + .expand('sizeVariant', p => { const { blockWidth, blockHeight } = kTextureFormatInfo[p.format]; return [ // Test the bound of width - [kLimitInfo.maxTextureDimension3D.default - 1, 1, 1], - [kLimitInfo.maxTextureDimension3D.default - blockWidth, 1, 1], - [kLimitInfo.maxTextureDimension3D.default - blockWidth, blockHeight, 1], - [kLimitInfo.maxTextureDimension3D.default, 1, 1], - [kLimitInfo.maxTextureDimension3D.default, blockHeight, 1], - [kLimitInfo.maxTextureDimension3D.default + 1, 1, 1], - [kLimitInfo.maxTextureDimension3D.default + blockWidth, 1, 1], - [kLimitInfo.maxTextureDimension3D.default + blockWidth, blockHeight, 1], + [ + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: -blockWidth }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: -blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: 0 }, + { mult: 0, add: blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: +1 }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: +blockWidth }, + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 1, add: +blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 0, add: 1 }, + ], + // Test the bound of height - [1, kLimitInfo.maxTextureDimension3D.default - 1, 1], - [1, kLimitInfo.maxTextureDimension3D.default - blockHeight, 1], - [blockWidth, kLimitInfo.maxTextureDimension3D.default - blockHeight, 1], - [1, kLimitInfo.maxTextureDimension3D.default, 1], - [blockWidth, kLimitInfo.maxTextureDimension3D.default, 1], - [1, kLimitInfo.maxTextureDimension3D.default + 1, 1], - [1, kLimitInfo.maxTextureDimension3D.default + blockWidth, 1], - [blockWidth, kLimitInfo.maxTextureDimension3D.default + blockHeight, 1], + [ + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: -blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 1, add: -blockHeight }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 1, add: 0 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 1, add: +blockWidth }, + { mult: 0, add: 1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 1, add: +blockHeight }, + { mult: 0, add: 1 }, + ], + // Test the bound of depth - [1, 1, kLimitInfo.maxTextureDimension3D.default - 1], - [blockWidth, 1, kLimitInfo.maxTextureDimension3D.default - 1], - [1, blockHeight, kLimitInfo.maxTextureDimension3D.default - 1], - [blockWidth, blockHeight, kLimitInfo.maxTextureDimension3D.default - 1], - [1, 1, kLimitInfo.maxTextureDimension3D.default], - [blockWidth, 1, kLimitInfo.maxTextureDimension3D.default], - [1, blockHeight, kLimitInfo.maxTextureDimension3D.default], - [blockWidth, blockHeight, kLimitInfo.maxTextureDimension3D.default], - [1, 1, kLimitInfo.maxTextureDimension3D.default + 1], - [blockWidth, 1, kLimitInfo.maxTextureDimension3D.default + 1], - [1, blockHeight, kLimitInfo.maxTextureDimension3D.default + 1], - [blockWidth, blockHeight, kLimitInfo.maxTextureDimension3D.default + 1], + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: blockHeight }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 1, add: -1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: blockHeight }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 1, add: 0 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: 1 }, + { mult: 1, add: +1 }, + ], + + [ + { mult: 0, add: 1 }, + { mult: 0, add: blockHeight }, + { mult: 1, add: +1 }, + ], + + [ + { mult: 0, add: blockWidth }, + { mult: 0, add: blockHeight }, + { mult: 1, add: +1 }, + ], ]; }) ) @@ -736,12 +1107,15 @@ g.test('texture_size,3d_texture,compressed_format') t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { - const { format, size } = t.params; + const { format, sizeVariant } = t.params; const info = kTextureFormatInfo[format]; + const maxTextureDimension3D = t.device.limits.maxTextureDimension3D; + const size = sizeVariant.map(variant => t.makeLimitVariant('maxTextureDimension3D', variant)); + assert( - kLimitInfo.maxTextureDimension3D.default % info.blockWidth === 0 && - kLimitInfo.maxTextureDimension3D.default % info.blockHeight === 0 + maxTextureDimension3D % info.blockWidth === 0 && + maxTextureDimension3D % info.blockHeight === 0 ); const descriptor = { @@ -754,9 +1128,9 @@ g.test('texture_size,3d_texture,compressed_format') const success = size[0] % info.blockWidth === 0 && size[1] % info.blockHeight === 0 && - size[0] <= kLimitInfo.maxTextureDimension3D.default && - size[1] <= kLimitInfo.maxTextureDimension3D.default && - size[2] <= kLimitInfo.maxTextureDimension3D.default; + size[0] <= maxTextureDimension3D && + size[1] <= maxTextureDimension3D && + size[2] <= maxTextureDimension3D; t.expectValidationError(() => { t.device.createTexture(descriptor); @@ -781,6 +1155,7 @@ g.test('texture_usage') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -837,6 +1212,8 @@ g.test('viewFormats') const { format, viewFormat } = t.params; const { blockWidth, blockHeight } = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format, viewFormat); + const compatible = viewCompatible(format, viewFormat); // Test the viewFormat in the list. diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createView.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createView.spec.js index 696aef1339a..5341b2a17fe 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createView.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/createView.spec.js @@ -55,6 +55,8 @@ g.test('format') const { textureFormat, viewFormat, useViewFormatList } = t.params; const { blockWidth, blockHeight } = kTextureFormatInfo[textureFormat]; + t.skipIfTextureFormatNotSupported(textureFormat, viewFormat); + const compatible = viewFormat === undefined || viewCompatible(textureFormat, viewFormat); const texture = t.device.createTexture({ @@ -89,6 +91,9 @@ g.test('dimension') .combine('textureDimension', kTextureDimensions) .combine('viewDimension', [...kTextureViewDimensions, undefined]) ) + .beforeAllSubcases(t => { + t.skipIfTextureViewDimensionNotSupported(t.params.viewDimension); + }) .fn(t => { const { textureDimension, viewDimension } = t.params; @@ -213,6 +218,8 @@ g.test('array_layers') arrayLayerCount, } = t.params; + t.skipIfTextureViewDimensionNotSupported(viewDimension); + const kWidth = 1 << (kLevels - 1); // 32 const textureDescriptor = { format: 'rgba8unorm', @@ -272,6 +279,8 @@ g.test('mip_levels') mipLevelCount, } = t.params; + t.skipIfTextureViewDimensionNotSupported(viewDimension); + const textureDescriptor = { format: 'rgba8unorm', dimension: textureDimension, @@ -310,6 +319,8 @@ g.test('cube_faces_square') .fn(t => { const { dimension, size } = t.params; + t.skipIfTextureViewDimensionNotSupported(dimension); + const texture = t.device.createTexture({ format: 'rgba8unorm', size, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js index 042c3067867..6ee13bd622f 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js @@ -6,7 +6,8 @@ API validation test for compute pass Does **not** test usage scopes (resource_usages/) or programmable pass stuff (programmable_pass). `; import { makeTestGroup } from '../../../../../common/framework/test_group.js'; -import { kBufferUsages, kLimitInfo } from '../../../../capability_info.js'; +import { makeValueTestVariant } from '../../../../../common/util/util.js'; +import { kBufferUsages } from '../../../../capability_info.js'; import { GPUConst } from '../../../../constants.js'; import { kResourceStates } from '../../../../gpu_test.js'; import { ValidationTest } from '../../validation_test.js'; @@ -89,7 +90,6 @@ g.test('pipeline,device_mismatch') validateFinish(!mismatched); }); -const kMaxDispatch = kLimitInfo.maxComputeWorkgroupsPerDimension.default; g.test('dispatch_sizes') .desc( `Test 'direct' and 'indirect' dispatch with various sizes. @@ -105,13 +105,22 @@ g.test('dispatch_sizes') .params(u => u .combine('dispatchType', ['direct', 'indirect']) - .combine('largeDimValue', [0, 1, kMaxDispatch, kMaxDispatch + 1, 0x7fff_ffff, 0xffff_ffff]) + .combine('largeDimValueVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 1, add: 1 }, + { mult: 0, add: 0x7fff_ffff }, + { mult: 0, add: 0xffff_ffff }, + ]) .beginSubcases() .combine('largeDimIndex', [0, 1, 2]) .combine('smallDimValue', [0, 1]) ) .fn(t => { - const { dispatchType, largeDimIndex, smallDimValue, largeDimValue } = t.params; + const { dispatchType, largeDimIndex, smallDimValue, largeDimValueVariant } = t.params; + const maxDispatch = t.device.limits.maxComputeWorkgroupsPerDimension; + const largeDimValue = makeValueTestVariant(maxDispatch, largeDimValueVariant); const pipeline = t.createNoOpComputePipeline(); @@ -132,7 +141,7 @@ g.test('dispatch_sizes') const shouldError = dispatchType === 'direct' && - (workSizes[0] > kMaxDispatch || workSizes[1] > kMaxDispatch || workSizes[2] > kMaxDispatch); + (workSizes[0] > maxDispatch || workSizes[1] > maxDispatch || workSizes[2] > maxDispatch); validateFinishAndSubmit(!shouldError, true); }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js index 845c871a216..2cd97907bcc 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js @@ -356,6 +356,8 @@ Test the formats of textures in copyTextureToTexture must be copy-compatible. const srcFormatInfo = kTextureFormatInfo[srcFormat]; const dstFormatInfo = kTextureFormatInfo[dstFormat]; + t.skipIfTextureFormatNotSupported(srcFormat, dstFormat); + const textureSize = { width: lcm(srcFormatInfo.blockWidth, dstFormatInfo.blockWidth), height: lcm(srcFormatInfo.blockHeight, dstFormatInfo.blockHeight), @@ -771,6 +773,7 @@ TODO: Express the offsets in "block size" so as to be able to test non-4x4 compr .beforeAllSubcases(t => { const { format } = t.params; t.selectDeviceOrSkipTestCase(kTextureFormatInfo[format].feature); + t.skipIfCopyTextureToTextureNotSupportedForFormat(format); }) .fn(t => { const { format, dimension, copyBoxOffsets, srcCopyLevel, dstCopyLevel } = t.params; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js index 3c3055d5301..7d4151e956a 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js @@ -4,7 +4,7 @@ Validation tests for setVertexBuffer on render pass and render bundle. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; -import { kLimitInfo } from '../../../../../capability_info.js'; +import { makeValueTestVariant } from '../../../../../../common/util/util.js'; import { GPUConst } from '../../../../../constants.js'; import { kResourceStates } from '../../../../../gpu_test.js'; import { ValidationTest } from '../../../validation_test.js'; @@ -20,14 +20,17 @@ Tests slot must be less than the maxVertexBuffers in device limits. ` ) .paramsSubcasesOnly( - kRenderEncodeTypeParams.combine('slot', [ - 0, - kLimitInfo.maxVertexBuffers.default - 1, - kLimitInfo.maxVertexBuffers.default, + kRenderEncodeTypeParams.combine('slotVariant', [ + { mult: 0, add: 0 }, + { mult: 1, add: -1 }, + { mult: 1, add: 0 }, ]) ) .fn(t => { - const { encoderType, slot } = t.params; + const { encoderType, slotVariant } = t.params; + const maxVertexBuffers = t.device.limits.maxVertexBuffers; + const slot = makeValueTestVariant(maxVertexBuffers, slotVariant); + const vertexBuffer = t.createBufferWithState('valid', { size: 16, usage: GPUBufferUsage.VERTEX, @@ -35,7 +38,7 @@ Tests slot must be less than the maxVertexBuffers in device limits. const { encoder, validateFinish } = t.createEncoder(encoderType); encoder.setVertexBuffer(slot, vertexBuffer); - validateFinish(slot < kLimitInfo.maxVertexBuffers.default); + validateFinish(slot < maxVertexBuffers); }); g.test('vertex_buffer_state') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js index ebf36911298..a9bd6fa2e8a 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js @@ -12,11 +12,10 @@ TODO: merge these notes and implement. > - setBindGroup in different orders (e.g. 0,1,2 vs 2,0,1) `; import { makeTestGroup } from '../../../../../common/framework/test_group.js'; -import { range, unreachable } from '../../../../../common/util/util.js'; +import { makeValueTestVariant, range, unreachable } from '../../../../../common/util/util.js'; import { kBufferBindingTypes, kMinDynamicBufferOffsetAlignment, - kLimitInfo, } from '../../../../capability_info.js'; import { kResourceStates } from '../../../../gpu_test.js'; import { kProgrammableEncoderTypes } from '../../../../util/command_buffer_maker.js'; @@ -379,28 +378,25 @@ g.test('buffer_dynamic_offsets') .combine('type', kBufferBindingTypes) .combine('encoderType', kProgrammableEncoderTypes) .beginSubcases() - .expand('dynamicOffset', ({ type }) => - type === 'uniform' - ? [ - kLimitInfo.minUniformBufferOffsetAlignment.default, - kLimitInfo.minUniformBufferOffsetAlignment.default * 0.5, - kLimitInfo.minUniformBufferOffsetAlignment.default * 1.5, - kLimitInfo.minUniformBufferOffsetAlignment.default * 2, - kLimitInfo.minUniformBufferOffsetAlignment.default + 2, - ] - : [ - kLimitInfo.minStorageBufferOffsetAlignment.default, - kLimitInfo.minStorageBufferOffsetAlignment.default * 0.5, - kLimitInfo.minStorageBufferOffsetAlignment.default * 1.5, - kLimitInfo.minStorageBufferOffsetAlignment.default * 2, - kLimitInfo.minStorageBufferOffsetAlignment.default + 2, - ] - ) + .combine('dynamicOffsetVariant', [ + { mult: 1, add: 0 }, + { mult: 0.5, add: 0 }, + { mult: 1.5, add: 0 }, + { mult: 2, add: 0 }, + { mult: 1, add: 2 }, + ]) ) .fn(t => { - const { type, dynamicOffset, encoderType } = t.params; + const { type, dynamicOffsetVariant, encoderType } = t.params; const kBindingSize = 12; + const minAlignment = + t.device.limits[ + type === 'uniform' ? 'minUniformBufferOffsetAlignment' : 'minStorageBufferOffsetAlignment' + ]; + + const dynamicOffset = makeValueTestVariant(minAlignment, dynamicOffsetVariant); + const bindGroupLayout = t.device.createBindGroupLayout({ entries: [ { @@ -411,14 +407,8 @@ g.test('buffer_dynamic_offsets') ], }); - let usage, isValid; - if (type === 'uniform') { - usage = GPUBufferUsage.UNIFORM; - isValid = dynamicOffset % kLimitInfo.minUniformBufferOffsetAlignment.default === 0; - } else { - usage = GPUBufferUsage.STORAGE; - isValid = dynamicOffset % kLimitInfo.minStorageBufferOffsetAlignment.default === 0; - } + const usage = type === 'uniform' ? GPUBufferUsage.UNIFORM : GPUBufferUsage.STORAGE; + const isValid = dynamicOffset % minAlignment === 0; const buffer = t.device.createBuffer({ size: 3 * kMinDynamicBufferOffsetAlignment, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js index 1c9c9ad1d4b..8849619ffef 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js @@ -5,8 +5,9 @@ createRenderBundleEncoder validation tests. `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { range } from '../../../../common/util/util.js'; -import { kMaxColorAttachments } from '../../../capability_info.js'; +import { kMaxColorAttachmentsToTest } from '../../../capability_info.js'; import { + computeBytesPerSampleFromFormats, kAllTextureFormats, kDepthStencilFormats, kTextureFormatInfo, @@ -21,11 +22,17 @@ g.test('attachment_state,limits,maxColorAttachments') .params(u => u.beginSubcases().combine( 'colorFormatCount', - range(kMaxColorAttachments + 1, i => i + 1) // 1-9 + range(kMaxColorAttachmentsToTest, i => i + 1) ) ) .fn(t => { const { colorFormatCount } = t.params; + const maxColorAttachments = t.device.limits.maxColorAttachments; + t.skipIf( + colorFormatCount > maxColorAttachments, + `${colorFormatCount} > maxColorAttachments: ${maxColorAttachments}` + ); + t.expectValidationError(() => { t.device.createRenderBundleEncoder({ colorFormats: Array(colorFormatCount).fill('r8unorm'), @@ -47,11 +54,20 @@ g.test('attachment_state,limits,maxColorAttachmentBytesPerSample,aligned') .beginSubcases() .combine( 'colorFormatCount', - range(kMaxColorAttachments, i => i + 1) + range(kMaxColorAttachmentsToTest, i => i + 1) ) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(t => { const { format, colorFormatCount } = t.params; + const maxColorAttachments = t.device.limits.maxColorAttachments; + t.skipIf( + colorFormatCount > maxColorAttachments, + `${colorFormatCount} > maxColorAttachments: ${maxColorAttachments}` + ); + const info = kTextureFormatInfo[format]; const shouldError = !info.colorRender || @@ -81,24 +97,28 @@ g.test('attachment_state,limits,maxColorAttachmentBytesPerSample,unaligned') // is allowed: 4+8+16+1+1 < 32. { formats: ['r8unorm', 'r32float', 'rgba8unorm', 'rgba32float', 'r8unorm'], - - _shouldError: true, }, { formats: ['r32float', 'rgba8unorm', 'rgba32float', 'r8unorm', 'r8unorm'], - - _shouldError: false, }, ]) ) .fn(t => { - const { formats, _shouldError } = t.params; + const { formats } = t.params; + + t.skipIf( + formats.length > t.device.limits.maxColorAttachments, + `numColorAttachments: ${formats.length} > maxColorAttachments: ${t.device.limits.maxColorAttachments}` + ); + + const shouldError = + computeBytesPerSampleFromFormats(formats) > t.device.limits.maxColorAttachmentBytesPerSample; t.expectValidationError(() => { t.device.createRenderBundleEncoder({ colorFormats: formats, }); - }, _shouldError); + }, shouldError); }); g.test('attachment_state,empty_color_formats') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/gpu_external_texture_expiration.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/gpu_external_texture_expiration.spec.js index a9dbd9018c2..39f26111baf 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/gpu_external_texture_expiration.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/gpu_external_texture_expiration.spec.js @@ -68,7 +68,7 @@ g.test('import_multiple_times_in_same_task_scope') .desc( ` Tests that GPUExternalTexture is valid after been imported in the task. - Tests that in the same task scope, import twice on the same video source should return + Tests that in the same task scope, import twice on the same video source may return the same GPUExternalTexture and bindGroup doesn't need to be updated. ` ) @@ -99,12 +99,20 @@ g.test('import_multiple_times_in_same_task_scope') t.submitCommandBuffer(bindGroup, true); // Import again in the same task scope should return same object. - const shouldBeTheSameExternalTexture = t.device.importExternalTexture({ + const mayBeTheSameExternalTexture = t.device.importExternalTexture({ source: source, }); - assert(externalTexture === shouldBeTheSameExternalTexture); - t.submitCommandBuffer(bindGroup, true); + if (externalTexture === mayBeTheSameExternalTexture) { + t.submitCommandBuffer(bindGroup, true); + } else { + bindGroup = t.device.createBindGroup({ + layout: t.getDefaultBindGroupLayout(), + entries: [{ binding: 0, resource: externalTexture }], + }); + + t.submitCommandBuffer(bindGroup, true); + } }); }); @@ -153,7 +161,8 @@ g.test('import_and_use_in_different_task') .desc( ` Tests that in the different task scope, previous imported GPUExternalTexture - should be expired. + should be expired if it is imported from HTMLVideoElment. GPUExternalTexture + imported from WebCodec VideoFrame is not expired. ` ) .params(u => @@ -184,8 +193,10 @@ g.test('import_and_use_in_different_task') }); await waitForNextTask(() => { - // Enter in another task scope, previous GPUExternalTexture should be expired. - t.submitCommandBuffer(bindGroup, false); + // Enter in another task scope. For GPUExternalTexture imported from WebCodec, + // it shouldn't be expired because VideoFrame is not 'closed'. + // For GPUExternalTexutre imported from HTMLVideoElement, it should be expired. + t.submitCommandBuffer(bindGroup, sourceType === 'VideoFrame' ? true : false); }); }); @@ -193,26 +204,17 @@ g.test('use_import_to_refresh') .desc( ` Tests that in the different task scope, imported GPUExternalTexture - again on the same source frame should return the same GPUExternalTexture - object and refresh it. + again on the same HTMLVideoElement should return active GPUExternalTexture. ` ) - .params(u => - u // - .combine('sourceType', ['VideoElement', 'VideoFrame']) - ) .fn(async t => { - const sourceType = t.params.sourceType; const videoElement = t.getDefaultVideoElementAndCheck(); let bindGroup; let externalTexture; let source; - await startPlayingAndWaitForVideo(videoElement, async () => { - source = - sourceType === 'VideoFrame' - ? await getVideoFrameFromVideoElement(t, videoElement) - : videoElement; + await startPlayingAndWaitForVideo(videoElement, () => { + source = videoElement; externalTexture = t.device.importExternalTexture({ source: source, }); @@ -226,14 +228,20 @@ g.test('use_import_to_refresh') }); await waitForNextTask(() => { - // Video frame is not updated, import should return the same GPUExternalTexture object. - const shouldBeTheSameExternalTexture = t.device.importExternalTexture({ + const mayBeTheSameExternalTexture = t.device.importExternalTexture({ source: source, }); - assert(externalTexture === shouldBeTheSameExternalTexture); - // ImportExternalTexture should refresh expired GPUExternalTexture. - t.submitCommandBuffer(bindGroup, true); + if (externalTexture === mayBeTheSameExternalTexture) { + // ImportExternalTexture should refresh expired GPUExternalTexture. + t.submitCommandBuffer(bindGroup, true); + } else { + bindGroup = t.device.createBindGroup({ + layout: t.getDefaultBindGroupLayout(), + entries: [{ binding: 0, resource: externalTexture }], + }); + t.submitCommandBuffer(bindGroup, true); + } }); }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js index 23e98336bfd..9cd4f423aac 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js @@ -185,6 +185,7 @@ Test that bytesPerRow must be a multiple of 256 for CopyB2T and CopyT2B if it is ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js index b1c3bd75377..0e2167c1b15 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js @@ -3,6 +3,7 @@ **/ import { depthStencilFormatCopyableAspects, kTextureFormatInfo, + isCompressedTextureFormat, } from '../../../format_info.js'; import { align } from '../../../util/math.js'; @@ -44,6 +45,11 @@ export class ImageCopyTest extends ValidationTest { break; } case 'CopyT2B': { + if (this.isCompatibility && isCompressedTextureFormat(textureCopyView.texture.format)) { + this.skip( + 'copyTextureToBuffer is not supported for compressed texture formats in compatibility mode.' + ); + } const buffer = this.device.createBuffer({ size: dataSize, usage: GPUBufferUsage.COPY_DST, @@ -130,6 +136,11 @@ export class ImageCopyTest extends ValidationTest { break; } case 'CopyT2B': { + if (this.isCompatibility && isCompressedTextureFormat(texture.format)) { + this.skip( + 'copyTextureToBuffer is not supported for compressed texture formats in compatibility mode.' + ); + } const { encoder, validateFinish, validateFinishAndSubmit } = this.createEncoder('non-pass'); encoder.copyTextureToBuffer({ texture }, { buffer, ...textureDataLayout }, size); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js index 6ec70eb1523..4f0e2810cc3 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js @@ -180,6 +180,7 @@ Test the computation of requiredBytesInCopy by computing the minimum data size f ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -252,6 +253,7 @@ Test that rowsPerImage has no alignment constraints. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -294,6 +296,7 @@ Test the alignment requirement on the linear data offset (block size, or 4 for d ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -398,6 +401,7 @@ Test that bytesPerRow, if specified must be big enough for a full copy row. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js index d2d1b64eea2..99365a1c582 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js @@ -267,6 +267,7 @@ Test the copy must be a full subresource if the texture's format is depth/stenci ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -358,6 +359,7 @@ Test that the texture copy origin must be aligned to the format's block size. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -421,6 +423,7 @@ Test that the copy size must be aligned to the texture's format's block size. ) .beforeAllSubcases(t => { const info = kTextureFormatInfo[t.params.format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js index b1531c0950d..20f26672d18 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js @@ -660,6 +660,7 @@ g.test('destination_texture,format') ) .beforeAllSubcases(t => { const { format } = t.params; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(kTextureFormatInfo[format].feature); }) .fn(async t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/attachment_compatibility.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/attachment_compatibility.spec.js index d12fbfb4634..76cb0b23611 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/attachment_compatibility.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/attachment_compatibility.spec.js @@ -5,7 +5,7 @@ Validation for attachment compatibility between render passes, bundles, and pipe `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { range } from '../../../../common/util/util.js'; -import { kTextureSampleCounts, kMaxColorAttachments } from '../../../capability_info.js'; +import { kMaxColorAttachmentsToTest, kTextureSampleCounts } from '../../../capability_info.js'; import { kRegularTextureFormats, kSizedDepthStencilFormats, @@ -16,7 +16,7 @@ import { } from '../../../format_info.js'; import { ValidationTest } from '../validation_test.js'; -const kColorAttachmentCounts = range(kMaxColorAttachments, i => i + 1); +const kColorAttachmentCounts = range(kMaxColorAttachmentsToTest, i => i + 1); const kColorAttachments = kColorAttachmentCounts .map(count => { // generate cases with 0..1 null attachments at different location @@ -166,6 +166,9 @@ g.test('render_pass_and_bundle,color_format') ) .fn(t => { const { passFormat, bundleFormat } = t.params; + + t.skipIfTextureFormatNotSupported(passFormat, bundleFormat); + const bundleEncoder = t.device.createRenderBundleEncoder({ colorFormats: [bundleFormat], }); @@ -228,6 +231,18 @@ g.test('render_pass_and_bundle,color_sparse') ) .fn(t => { const { passAttachments, bundleAttachments } = t.params; + + const maxColorAttachments = t.device.limits.maxColorAttachments; + t.skipIf( + passAttachments.length > maxColorAttachments, + `num passAttachments: ${passAttachments.length} > maxColorAttachments for device: ${maxColorAttachments}` + ); + + t.skipIf( + bundleAttachments.length > maxColorAttachments, + `num bundleAttachments: ${bundleAttachments.length} > maxColorAttachments for device: ${maxColorAttachments}` + ); + const colorFormats = bundleAttachments.map(i => (i ? 'rgba8uint' : null)); const bundleEncoder = t.device.createRenderBundleEncoder({ colorFormats, @@ -351,6 +366,9 @@ Test that color attachment formats in render passes or bundles match the pipelin ) .fn(t => { const { encoderType, encoderFormat, pipelineFormat } = t.params; + + t.skipIfTextureFormatNotSupported(encoderFormat, pipelineFormat); + const pipeline = t.createRenderPipeline([{ format: pipelineFormat, writeMask: 0 }]); const { encoder, validateFinishAndSubmit } = t.createEncoder(encoderType, { @@ -409,6 +427,16 @@ Test that each of color attachments in render passes or bundles match that of th ) .fn(t => { const { encoderType, encoderAttachments, pipelineAttachments } = t.params; + const maxColorAttachments = t.device.limits.maxColorAttachments; + t.skipIf( + encoderAttachments.length > maxColorAttachments, + `num encoderAttachments: ${encoderAttachments.length} > maxColorAttachments for device: ${maxColorAttachments}` + ); + + t.skipIf( + pipelineAttachments.length > maxColorAttachments, + `num pipelineAttachments: ${pipelineAttachments.length} > maxColorAttachments for device: ${maxColorAttachments}` + ); const colorTargets = pipelineAttachments.map(i => i ? { format: 'rgba8uint', writeMask: 0 } : null diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js index 81501a388ab..123b97cf2b1 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js @@ -7,9 +7,10 @@ TODO: review for completeness `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { range } from '../../../../common/util/util.js'; -import { kMaxColorAttachments, kQueryTypes } from '../../../capability_info.js'; +import { kMaxColorAttachmentsToTest, kQueryTypes } from '../../../capability_info.js'; import { GPUConst } from '../../../constants.js'; import { + computeBytesPerSampleFromFormats, kDepthStencilFormats, kRenderableColorTextureFormats, kTextureFormatInfo, @@ -107,7 +108,7 @@ g.test('color_attachments,empty') ) .paramsSubcasesOnly(u => u - .combine('colorAttachments', [ + .combine('unclampedColorAttachments', [ [], [undefined], [undefined, undefined], @@ -117,7 +118,11 @@ g.test('color_attachments,empty') .combine('hasDepthStencilAttachment', [false, true]) ) .fn(t => { - const { colorAttachments, hasDepthStencilAttachment } = t.params; + const { unclampedColorAttachments, hasDepthStencilAttachment } = t.params; + const colorAttachments = unclampedColorAttachments.slice( + 0, + t.device.limits.maxColorAttachments + ); let isEmptyColorTargets = true; for (let i = 0; i < colorAttachments.length; i++) { @@ -145,11 +150,15 @@ g.test('color_attachments,limits,maxColorAttachments') ` ) .paramsSimple([ - { colorAttachmentsCount: 8, _success: true }, // Control case - { colorAttachmentsCount: 9, _success: false }, // Out of bounds + { colorAttachmentsCountVariant: { mult: 1, add: 0 }, _success: true }, // Control case + { colorAttachmentsCountVariant: { mult: 1, add: 1 }, _success: false }, // Out of bounds ]) .fn(t => { - const { colorAttachmentsCount, _success } = t.params; + const { colorAttachmentsCountVariant, _success } = t.params; + const colorAttachmentsCount = t.makeLimitVariant( + 'maxColorAttachments', + colorAttachmentsCountVariant + ); const colorAttachments = []; for (let i = 0; i < colorAttachmentsCount; i++) { @@ -173,13 +182,21 @@ g.test('color_attachments,limits,maxColorAttachmentBytesPerSample,aligned') .beginSubcases() .combine( 'attachmentCount', - range(kMaxColorAttachments, i => i + 1) + range(kMaxColorAttachmentsToTest, i => i + 1) ) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(t => { const { format, attachmentCount } = t.params; const info = kTextureFormatInfo[format]; + t.skipIf( + attachmentCount > t.device.limits.maxColorAttachments, + `attachmentCount: ${attachmentCount} > maxColorAttachments: ${t.device.limits.maxColorAttachments}` + ); + const colorAttachments = []; for (let i = 0; i < attachmentCount; i++) { const colorTexture = t.createTexture({ format }); @@ -187,7 +204,7 @@ g.test('color_attachments,limits,maxColorAttachmentBytesPerSample,aligned') } const shouldError = info.colorRender === undefined || - info.colorRender.byteCost * attachmentCount > + computeBytesPerSampleFromFormats(range(attachmentCount, () => format)) > t.device.limits.maxColorAttachmentBytesPerSample; t.tryRenderPass(!shouldError, { colorAttachments }); @@ -208,25 +225,30 @@ g.test('color_attachments,limits,maxColorAttachmentBytesPerSample,unaligned') // is allowed: 4+8+16+1+1 < 32. { formats: ['r8unorm', 'r32float', 'rgba8unorm', 'rgba32float', 'r8unorm'], - - _success: false, }, { formats: ['r32float', 'rgba8unorm', 'rgba32float', 'r8unorm', 'r8unorm'], - - _success: true, }, ]) ) .fn(t => { - const { formats, _success } = t.params; + const { formats } = t.params; + + t.skipIf( + formats.length > t.device.limits.maxColorAttachments, + `numColorAttachments: ${formats.length} > maxColorAttachments: ${t.device.limits.maxColorAttachments}` + ); const colorAttachments = []; for (const format of formats) { const colorTexture = t.createTexture({ format }); colorAttachments.push(t.getColorAttachment(colorTexture)); } - t.tryRenderPass(_success, { colorAttachments }); + + const success = + computeBytesPerSampleFromFormats(formats) <= t.device.limits.maxColorAttachmentBytesPerSample; + + t.tryRenderPass(success, { colorAttachments }); }); g.test('attachments,same_size') @@ -934,6 +956,9 @@ g.test('resolveTarget,format_supports_resolve') .combine('format', kRenderableColorTextureFormats) .filter(t => kTextureFormatInfo[t.format].multisample) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/depth_stencil_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/depth_stencil_state.spec.js index bfb1a1696c3..d526b2f1801 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/depth_stencil_state.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/depth_stencil_state.spec.js @@ -19,6 +19,7 @@ g.test('format') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/fragment_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/fragment_state.spec.js index ade2ebecee7..76f044e97d5 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/fragment_state.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/fragment_state.spec.js @@ -5,11 +5,16 @@ This test dedicatedly tests validation of GPUFragmentState of createRenderPipeli `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { range } from '../../../../common/util/util.js'; -import { kBlendFactors, kBlendOperations, kMaxColorAttachments } from '../../../capability_info.js'; +import { + kBlendFactors, + kBlendOperations, + kMaxColorAttachmentsToTest, +} from '../../../capability_info.js'; import { kTextureFormats, kRenderableColorTextureFormats, kTextureFormatInfo, + computeBytesPerSampleFromFormats, } from '../../../format_info.js'; import { getFragmentShaderCodeWithOutput, @@ -51,6 +56,7 @@ g.test('targets_format_renderable') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(t.params.format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { @@ -66,16 +72,27 @@ g.test('limits,maxColorAttachments') .desc( `Tests that color state targets length must not be larger than device.limits.maxColorAttachments.` ) - .params(u => u.combine('isAsync', [false, true]).combine('targetsLength', [8, 9])) + .params(u => + u.combine('isAsync', [false, true]).combine('targetsLengthVariant', [ + { mult: 1, add: 0 }, + { mult: 1, add: 1 }, + ]) + ) .fn(t => { - const { isAsync, targetsLength } = t.params; + const { isAsync, targetsLengthVariant } = t.params; + const targetsLength = t.makeLimitVariant('maxColorAttachments', targetsLengthVariant); const descriptor = t.getDescriptor({ targets: range(targetsLength, i => { - // Set writeMask to 0 for attachments without fragment output - return { format: 'rg8unorm', writeMask: i === 0 ? 0xf : 0 }; + return { format: 'rg8unorm', writeMask: 0 }; }), fragmentShaderCode: kDefaultFragmentShaderCode, + // add a depth stencil so that we can set writeMask to 0 for all color attachments + depthStencil: { + format: 'depth24plus', + depthWriteEnabled: true, + depthCompare: 'always', + }, }); t.doCreateRenderPipelineTest( @@ -98,14 +115,22 @@ g.test('limits,maxColorAttachmentBytesPerSample,aligned') .beginSubcases() .combine( 'attachmentCount', - range(kMaxColorAttachments, i => i + 1) + range(kMaxColorAttachmentsToTest, i => i + 1) ) .combine('isAsync', [false, true]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(t => { const { format, attachmentCount, isAsync } = t.params; const info = kTextureFormatInfo[format]; + t.skipIf( + attachmentCount > t.device.limits.maxColorAttachments, + `attachmentCount: ${attachmentCount} > maxColorAttachments: ${t.device.limits.maxColorAttachments}` + ); + const descriptor = t.getDescriptor({ targets: range(attachmentCount, () => { return { format, writeMask: 0 }; @@ -135,20 +160,24 @@ g.test('limits,maxColorAttachmentBytesPerSample,unaligned') // is allowed: 4+8+16+1+1 < 32. { formats: ['r8unorm', 'r32float', 'rgba8unorm', 'rgba32float', 'r8unorm'], - - _success: false, }, { formats: ['r32float', 'rgba8unorm', 'rgba32float', 'r8unorm', 'r8unorm'], - - _success: true, }, ]) .beginSubcases() .combine('isAsync', [false, true]) ) .fn(t => { - const { formats, _success, isAsync } = t.params; + const { formats, isAsync } = t.params; + + t.skipIf( + formats.length > t.device.limits.maxColorAttachments, + `numColorAttachments: ${formats.length} > maxColorAttachments: ${t.device.limits.maxColorAttachments}` + ); + + const success = + computeBytesPerSampleFromFormats(formats) <= t.device.limits.maxColorAttachmentBytesPerSample; const descriptor = t.getDescriptor({ targets: formats.map(f => { @@ -156,7 +185,7 @@ g.test('limits,maxColorAttachmentBytesPerSample,unaligned') }), }); - t.doCreateRenderPipelineTest(isAsync, _success, descriptor); + t.doCreateRenderPipelineTest(isAsync, success, descriptor); }); g.test('targets_format_filterable') @@ -176,6 +205,7 @@ g.test('targets_format_filterable') .beforeAllSubcases(t => { const { format } = t.params; const info = kTextureFormatInfo[format]; + t.skipIfTextureFormatNotSupported(format); t.selectDeviceOrSkipTestCase(info.feature); }) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/multisample_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/multisample_state.spec.js index cdf20468315..b9434ec07ac 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/multisample_state.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/multisample_state.spec.js @@ -61,6 +61,10 @@ g.test('alpha_to_coverage,sample_mask') .fn(t => { const { isAsync, alphaToCoverageEnabled, hasSampleMaskOutput } = t.params; + if (t.isCompatibility && hasSampleMaskOutput) { + t.skip('WGSL sample_mask is not supported in compatibility mode'); + } + const descriptor = t.getDescriptor({ multisample: { alphaToCoverageEnabled, count: 4 }, fragmentShaderCode: hasSampleMaskOutput diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/vertex_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/vertex_state.spec.js index fe735f042f8..852f39febd4 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/vertex_state.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/render_pipeline/vertex_state.spec.js @@ -5,12 +5,10 @@ This test dedicatedly tests validation of GPUVertexState of createRenderPipeline `; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { - kMaxVertexAttributes, - kMaxVertexBufferArrayStride, - kMaxVertexBuffers, - kVertexFormats, - kVertexFormatInfo, -} from '../../../capability_info.js'; + filterUniqueValueTestVariants, + makeValueTestVariant, +} from '../../../../common/util/util.js'; +import { kVertexFormats, kVertexFormatInfo } from '../../../capability_info.js'; import { ValidationTest } from '../validation_test.js'; const VERTEX_SHADER_CODE_WITH_NO_INPUT = ` @@ -138,12 +136,17 @@ g.test('max_vertex_buffer_limit') ) .paramsSubcasesOnly(u => u // - .combine('count', [0, 1, kMaxVertexBuffers, kMaxVertexBuffers + 1]) + .combine('countVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 1, add: 1 }, + ]) .combine('lastEmpty', [false, true]) ) .fn(t => { - const { count, lastEmpty } = t.params; - + const { countVariant, lastEmpty } = t.params; + const count = t.makeLimitVariant('maxVertexBuffers', countVariant); const vertexBuffers = []; for (let i = 0; i < count; i++) { if (lastEmpty || i !== count - 1) { @@ -156,7 +159,7 @@ g.test('max_vertex_buffer_limit') } } - const success = count <= kMaxVertexBuffers; + const success = count <= t.device.limits.maxVertexBuffers; t.testVertexState(success, vertexBuffers); }); @@ -168,11 +171,17 @@ g.test('max_vertex_attribute_limit') ) .paramsSubcasesOnly(u => u // - .combine('attribCount', [0, 1, kMaxVertexAttributes, kMaxVertexAttributes + 1]) + .combine('attribCountVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: 0 }, + { mult: 1, add: 1 }, + ]) .combine('attribsPerBuffer', [0, 1, 4]) ) .fn(t => { - const { attribCount, attribsPerBuffer } = t.params; + const { attribCountVariant, attribsPerBuffer } = t.params; + const attribCount = t.makeLimitVariant('maxVertexAttributes', attribCountVariant); const vertexBuffers = []; @@ -180,7 +189,7 @@ g.test('max_vertex_attribute_limit') while (attribsAdded !== attribCount) { // Choose how many attributes to add for this buffer. The last buffer gets all remaining attributes. let targetCount = Math.min(attribCount, attribsAdded + attribsPerBuffer); - if (vertexBuffers.length === kMaxVertexBuffers - 1) { + if (vertexBuffers.length === t.device.limits.maxVertexBuffers - 1) { targetCount = attribCount; } @@ -193,7 +202,7 @@ g.test('max_vertex_attribute_limit') vertexBuffers.push({ arrayStride: 0, attributes }); } - const success = attribCount <= kMaxVertexAttributes; + const success = attribCount <= t.device.limits.maxVertexAttributes; t.testVertexState(success, vertexBuffers); }); @@ -205,23 +214,28 @@ g.test('max_vertex_buffer_array_stride_limit') ) .paramsSubcasesOnly(u => u // - .combine('vertexBufferIndex', [0, 1, kMaxVertexBuffers - 1]) - .combine('arrayStride', [ - 0, - 4, - 256, - kMaxVertexBufferArrayStride - 4, - kMaxVertexBufferArrayStride, - kMaxVertexBufferArrayStride + 4, + .combine('vertexBufferIndexVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('arrayStrideVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 4 }, + { mult: 0, add: 256 }, + { mult: 1, add: -4 }, + { mult: 1, add: 0 }, + { mult: 1, add: +4 }, ]) ) .fn(t => { - const { vertexBufferIndex, arrayStride } = t.params; - + const { vertexBufferIndexVariant, arrayStrideVariant } = t.params; + const vertexBufferIndex = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexVariant); + const arrayStride = t.makeLimitVariant('maxVertexBufferArrayStride', arrayStrideVariant); const vertexBuffers = []; vertexBuffers[vertexBufferIndex] = { arrayStride, attributes: [] }; - const success = arrayStride <= kMaxVertexBufferArrayStride; + const success = arrayStride <= t.device.limits.maxVertexBufferArrayStride; t.testVertexState(success, vertexBuffers); }); @@ -233,19 +247,25 @@ g.test('vertex_buffer_array_stride_limit_alignment') ) .paramsSubcasesOnly(u => u // - .combine('vertexBufferIndex', [0, 1, kMaxVertexBuffers - 1]) - .combine('arrayStride', [ - 0, - 1, - 2, - 4, - kMaxVertexBufferArrayStride - 4, - kMaxVertexBufferArrayStride - 2, - kMaxVertexBufferArrayStride, + .combine('vertexBufferIndexVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('arrayStrideVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 2 }, + { mult: 0, add: 4 }, + { mult: 1, add: -4 }, + { mult: 1, add: -2 }, + { mult: 1, add: 0 }, ]) ) .fn(t => { - const { vertexBufferIndex, arrayStride } = t.params; + const { vertexBufferIndexVariant, arrayStrideVariant } = t.params; + const vertexBufferIndex = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexVariant); + const arrayStride = t.makeLimitVariant('maxVertexBufferArrayStride', arrayStrideVariant); const vertexBuffers = []; vertexBuffers[vertexBufferIndex] = { arrayStride, attributes: [] }; @@ -263,18 +283,38 @@ g.test('vertex_attribute_shaderLocation_limit') ) .paramsSubcasesOnly(u => u // - .combine('vertexBufferIndex', [0, 1, kMaxVertexBuffers - 1]) - .combine('extraAttributeCount', [0, 1, kMaxVertexAttributes - 1]) + .combine('vertexBufferIndexVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('extraAttributeCountVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) .combine('testAttributeAtStart', [false, true]) - .combine('testShaderLocation', [0, 1, kMaxVertexAttributes - 1, kMaxVertexAttributes]) + .combine('testShaderLocationVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + { mult: 1, add: 0 }, + ]) ) .fn(t => { const { - vertexBufferIndex, - extraAttributeCount, - testShaderLocation, + vertexBufferIndexVariant, + extraAttributeCountVariant, + testShaderLocationVariant, testAttributeAtStart, } = t.params; + const vertexBufferIndex = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexVariant); + const extraAttributeCount = t.makeLimitVariant( + 'maxVertexAttributes', + extraAttributeCountVariant + ); + + const testShaderLocation = t.makeLimitVariant('maxVertexAttributes', testShaderLocationVariant); const attributes = []; addTestAttributes(attributes, { @@ -287,7 +327,7 @@ g.test('vertex_attribute_shaderLocation_limit') const vertexBuffers = []; vertexBuffers[vertexBufferIndex] = { arrayStride: 256, attributes }; - const success = testShaderLocation < kMaxVertexAttributes; + const success = testShaderLocation < t.device.limits.maxVertexAttributes; t.testVertexState(success, vertexBuffers); }); @@ -300,24 +340,46 @@ g.test('vertex_attribute_shaderLocation_unique') ) .paramsSubcasesOnly(u => u // - .combine('vertexBufferIndexA', [0, 1, kMaxVertexBuffers - 1]) - .combine('vertexBufferIndexB', [0, 1, kMaxVertexBuffers - 1]) + .combine('vertexBufferIndexAVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('vertexBufferIndexBVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) .combine('testAttributeAtStartA', [false, true]) .combine('testAttributeAtStartB', [false, true]) - .combine('shaderLocationA', [0, 1, 7, kMaxVertexAttributes - 1]) - .combine('shaderLocationB', [0, 1, 7, kMaxVertexAttributes - 1]) + .combine('shaderLocationAVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 7 }, + { mult: 1, add: -1 }, + ]) + .combine('shaderLocationBVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 7 }, + { mult: 1, add: -1 }, + ]) .combine('extraAttributeCount', [0, 4]) ) .fn(t => { const { - vertexBufferIndexA, - vertexBufferIndexB, + vertexBufferIndexAVariant, + vertexBufferIndexBVariant, testAttributeAtStartA, testAttributeAtStartB, - shaderLocationA, - shaderLocationB, + shaderLocationAVariant, + shaderLocationBVariant, extraAttributeCount, } = t.params; + const vertexBufferIndexA = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexAVariant); + const vertexBufferIndexB = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexBVariant); + const shaderLocationA = t.makeLimitVariant('maxVertexAttributes', shaderLocationAVariant); + const shaderLocationB = t.makeLimitVariant('maxVertexAttributes', shaderLocationBVariant); // Depending on the params, the vertexBuffer for A and B can be the same or different. To support // both cases without code changes we treat `vertexBufferAttributes` as a map from indices to @@ -363,10 +425,17 @@ g.test('vertex_shader_input_location_limit') ) .paramsSubcasesOnly(u => u // - .combine('testLocation', [0, 1, kMaxVertexAttributes - 1, kMaxVertexAttributes, 2 ** 31 - 1]) + .combine('testLocationVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + { mult: 1, add: 0 }, + { mult: 0, add: 2 ** 31 - 1 }, + ]) ) .fn(t => { - const { testLocation } = t.params; + const { testLocationVariant } = t.params; + const testLocation = t.makeLimitVariant('maxVertexAttributes', testLocationVariant); const shader = t.generateTestVertexShader([ { @@ -388,7 +457,7 @@ g.test('vertex_shader_input_location_limit') }, ]; - const success = testLocation < kMaxVertexAttributes; + const success = testLocation < t.device.limits.maxVertexAttributes; t.testVertexState(success, vertexBuffers, shader); }); @@ -400,18 +469,39 @@ g.test('vertex_shader_input_location_in_vertex_state') ) .paramsSubcasesOnly(u => u // - .combine('vertexBufferIndex', [0, 1, kMaxVertexBuffers - 1]) - .combine('extraAttributeCount', [0, 1, kMaxVertexAttributes - 1]) + .combine('vertexBufferIndexVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('extraAttributeCountVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) .combine('testAttributeAtStart', [false, true]) - .combine('testShaderLocation', [0, 1, 4, 7, kMaxVertexAttributes - 1]) + .combine('testShaderLocationVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 0, add: 4 }, + { mult: 0, add: 5 }, + { mult: 1, add: -1 }, + ]) ) .fn(t => { const { - vertexBufferIndex, - extraAttributeCount, + vertexBufferIndexVariant, + extraAttributeCountVariant, testAttributeAtStart, - testShaderLocation, + testShaderLocationVariant, } = t.params; + const vertexBufferIndex = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexVariant); + const extraAttributeCount = t.makeLimitVariant( + 'maxVertexAttributes', + extraAttributeCountVariant + ); + + const testShaderLocation = t.makeLimitVariant('maxVertexAttributes', testShaderLocationVariant); // We have a shader using `testShaderLocation`. const shader = t.generateTestVertexShader([ { @@ -502,37 +592,55 @@ g.test('vertex_attribute_offset_alignment') .params(u => u .combine('format', kVertexFormats) - .combine('arrayStride', [256, kMaxVertexBufferArrayStride]) - .expand('offset', p => { + .combine('arrayStrideVariant', [ + { mult: 0, add: 256 }, + { mult: 1, add: 0 }, + ]) + .expand('offsetVariant', p => { const { bytesPerComponent, componentCount } = kVertexFormatInfo[p.format]; const formatSize = bytesPerComponent * componentCount; - - return new Set([ - 0, - Math.floor(formatSize / 2), - formatSize, - 2, - 4, - p.arrayStride - formatSize, - p.arrayStride - formatSize - Math.floor(formatSize / 2), - p.arrayStride - formatSize - 4, - p.arrayStride - formatSize - 2, + return filterUniqueValueTestVariants([ + { mult: 0, add: 0 }, + { mult: 0, add: Math.floor(formatSize / 2) }, + { mult: 0, add: formatSize }, + { mult: 0, add: 2 }, + { mult: 0, add: 4 }, + { mult: 1, add: -formatSize }, + { mult: 1, add: -formatSize - Math.floor(formatSize / 2) }, + { mult: 1, add: -formatSize - 4 }, + { mult: 1, add: -formatSize - 2 }, ]); }) .beginSubcases() - .combine('vertexBufferIndex', [0, 1, kMaxVertexBuffers - 1]) - .combine('extraAttributeCount', [0, 1, kMaxVertexAttributes - 1]) + .combine('vertexBufferIndexVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('extraAttributeCountVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) .combine('testAttributeAtStart', [false, true]) ) .fn(t => { const { format, - arrayStride, - offset, - vertexBufferIndex, - extraAttributeCount, + arrayStrideVariant, + offsetVariant, + vertexBufferIndexVariant, + extraAttributeCountVariant, testAttributeAtStart, } = t.params; + const arrayStride = t.makeLimitVariant('maxVertexBufferArrayStride', arrayStrideVariant); + const vertexBufferIndex = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexVariant); + const extraAttributeCount = t.makeLimitVariant( + 'maxVertexAttributes', + extraAttributeCountVariant + ); + + const offset = makeValueTestVariant(arrayStride, offsetVariant); const attributes = []; addTestAttributes(attributes, { @@ -565,46 +673,61 @@ g.test('vertex_attribute_contained_in_stride') u .combine('format', kVertexFormats) .beginSubcases() - .combine('arrayStride', [ - 0, - 256, - kMaxVertexBufferArrayStride - 4, - kMaxVertexBufferArrayStride, + .combine('arrayStrideVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 256 }, + { mult: 1, add: -4 }, + { mult: 1, add: 0 }, ]) - .expand('offset', function* (p) { + .expand('offsetVariant', function* (p) { // Compute a bunch of test offsets to test. const { bytesPerComponent, componentCount } = kVertexFormatInfo[p.format]; const formatSize = bytesPerComponent * componentCount; - yield 0; - yield 4; - - // arrayStride = 0 is a special case because for the offset validation it acts the same - // as arrayStride = kMaxVertexBufferArrayStride. We special case here so as to avoid adding - // negative offsets that would cause an IDL exception to be thrown instead of a validation - // error. - const stride = p.arrayStride !== 0 ? p.arrayStride : kMaxVertexBufferArrayStride; - yield stride - formatSize; - yield stride - formatSize + 4; + yield { mult: 0, add: 0 }; + yield { mult: 0, add: 4 }; + yield { mult: 1, add: -formatSize }; + yield { mult: 1, add: -formatSize + 4 }; // Avoid adding duplicate cases when formatSize == 4 (it is already tested above) if (formatSize !== 4) { - yield formatSize; - yield stride; + yield { mult: 0, add: formatSize }; + yield { mult: 1, add: 0 }; } }) - .combine('vertexBufferIndex', [0, 1, kMaxVertexBuffers - 1]) - .combine('extraAttributeCount', [0, 1, kMaxVertexAttributes - 1]) + .combine('vertexBufferIndexVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) + .combine('extraAttributeCountVariant', [ + { mult: 0, add: 0 }, + { mult: 0, add: 1 }, + { mult: 1, add: -1 }, + ]) .combine('testAttributeAtStart', [false, true]) ) .fn(t => { const { format, - arrayStride, - offset, - vertexBufferIndex, - extraAttributeCount, + arrayStrideVariant, + offsetVariant, + vertexBufferIndexVariant, + extraAttributeCountVariant, testAttributeAtStart, } = t.params; + const arrayStride = t.makeLimitVariant('maxVertexBufferArrayStride', arrayStrideVariant); + const vertexBufferIndex = t.makeLimitVariant('maxVertexBuffers', vertexBufferIndexVariant); + const extraAttributeCount = t.makeLimitVariant( + 'maxVertexAttributes', + extraAttributeCountVariant + ); + + // arrayStride = 0 is a special case because for the offset validation it acts the same + // as arrayStride = device.limits.maxVertexBufferArrayStride. We special case here so as to avoid adding + // negative offsets that would cause an IDL exception to be thrown instead of a validation + // error. + const stride = arrayStride !== 0 ? arrayStride : t.device.limits.maxVertexBufferArrayStride; + const offset = makeValueTestVariant(stride, offsetVariant); const attributes = []; addTestAttributes(attributes, { @@ -619,7 +742,7 @@ g.test('vertex_attribute_contained_in_stride') const formatInfo = kVertexFormatInfo[format]; const formatSize = formatInfo.bytesPerComponent * formatInfo.componentCount; - const limit = arrayStride === 0 ? kMaxVertexBufferArrayStride : arrayStride; + const limit = arrayStride === 0 ? t.device.limits.maxVertexBufferArrayStride : arrayStride; const success = offset + formatSize <= limit; t.testVertexState(success, vertexBuffers); @@ -631,7 +754,7 @@ g.test('many_attributes_overlapping') // Create many attributes, each of them intersects with at least 3 others. const attributes = []; const formats = ['float32x4', 'uint32x4', 'sint32x4']; - for (let i = 0; i < kMaxVertexAttributes; i++) { + for (let i = 0; i < t.device.limits.maxVertexAttributes; i++) { attributes.push({ format: formats[i % 3], offset: i * 4, shaderLocation: i }); } diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js index 6c6588259f1..10c74b80061 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js @@ -412,6 +412,17 @@ g.test('subresources_and_binding_types_combination_for_color') arrayLayerCount: layerCount1, }); + const viewsAreSame = + dimension0 === dimension1 && + layerCount0 === layerCount1 && + BASE_LEVEL === baseLevel1 && + levelCount0 === levelCount1 && + BASE_LAYER === baseLayer1 && + layerCount0 === layerCount1; + if (!viewsAreSame && t.isCompatibility) { + t.skip('different views of same texture are not supported in compatibility mode'); + } + const encoder = t.device.createCommandEncoder(); if (type0 === 'render-target') { // Note that type1 is 'render-target' too. So we don't need to create bindings. diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js index 0029128d03a..b7708dd89d7 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js @@ -6,6 +6,7 @@ Tests for device lost induced via destroy. - After device destruction, runs the same APIs. No expected observable results, so test crash or future failures are the only current failure indicators. `; import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { assert } from '../../../../../common/util/util.js'; import { allBindingEntries, bindingTypeInfo, @@ -109,7 +110,6 @@ Tests creating buffers on destroyed device. Tests valid combinations of: .params(u => u .combine('usageType', kBufferUsageKeys) - .beginSubcases() .combine('usageCopy', kBufferUsageCopy) .combine('awaitLost', [true, false]) .filter(({ usageType, usageCopy }) => { @@ -148,7 +148,6 @@ Tests creating 2d uncompressed textures on destroyed device. Tests valid combina .params(u => u .combine('format', kRegularTextureFormats) - .beginSubcases() .combine('usageType', kTextureUsageType) .combine('usageCopy', kTextureUsageCopy) .combine('awaitLost', [true, false]) @@ -160,6 +159,9 @@ Tests creating 2d uncompressed textures on destroyed device. Tests valid combina ); }) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(async t => { const { awaitLost, format, usageType, usageCopy } = t.params; const { blockWidth, blockHeight } = kTextureFormatInfo[format]; @@ -183,7 +185,6 @@ Tests creating 2d compressed textures on destroyed device. Tests valid combinati .params(u => u .combine('format', kCompressedTextureFormats) - .beginSubcases() .combine('usageType', kTextureUsageType) .combine('usageCopy', kTextureUsageCopy) .combine('awaitLost', [true, false]) @@ -222,7 +223,6 @@ Tests creating texture views on 2d uncompressed textures from destroyed device. .params(u => u .combine('format', kRegularTextureFormats) - .beginSubcases() .combine('usageType', kTextureUsageType) .combine('usageCopy', kTextureUsageCopy) .combine('awaitLost', [true, false]) @@ -234,6 +234,9 @@ Tests creating texture views on 2d uncompressed textures from destroyed device. ); }) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(async t => { const { awaitLost, format, usageType, usageCopy } = t.params; const { blockWidth, blockHeight } = kTextureFormatInfo[format]; @@ -258,7 +261,6 @@ Tests creating texture views on 2d compressed textures from destroyed device. Te .params(u => u .combine('format', kCompressedTextureFormats) - .beginSubcases() .combine('usageType', kTextureUsageType) .combine('usageCopy', kTextureUsageCopy) .combine('awaitLost', [true, false]) @@ -293,7 +295,7 @@ g.test('createSampler') Tests creating samplers on destroyed device. ` ) - .params(u => u.beginSubcases().combine('awaitLost', [true, false])) + .params(u => u.combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost } = t.params; await t.executeAfterDestroy(() => { @@ -309,9 +311,7 @@ Tests creating bind group layouts on destroyed device. Tests valid combinations - Maximum set of visibility for each binding entry ` ) - .params(u => - u.combine('entry', allBindingEntries(false)).beginSubcases().combine('awaitLost', [true, false]) - ) + .params(u => u.combine('entry', allBindingEntries(false)).combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost, entry } = t.params; const visibility = bindingTypeInfo(entry).validStages; @@ -349,7 +349,6 @@ Tests creating bind group on destroyed device. Tests valid combinations of: return info.resource === resourceType; } }) - .beginSubcases() .combine('awaitLost', [true, false]) ) .fn(async t => { @@ -372,9 +371,7 @@ Tests creating pipeline layouts on destroyed device. Tests valid combinations of - Maximum set of visibility for each binding entry ` ) - .params(u => - u.combine('entry', allBindingEntries(false)).beginSubcases().combine('awaitLost', [true, false]) - ) + .params(u => u.combine('entry', allBindingEntries(false)).combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost, entry } = t.params; const visibility = bindingTypeInfo(entry).validStages; @@ -395,9 +392,7 @@ Tests creating shader modules on destroyed device. - Tests all shader stages: vertex, fragment, compute ` ) - .params(u => - u.combine('stage', kShaderStageKeys).beginSubcases().combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kShaderStageKeys).combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost, stage } = t.params; await t.executeAfterDestroy(() => { @@ -412,7 +407,7 @@ Tests creating compute pipeline on destroyed device. - Tests with a valid no-op compute shader ` ) - .params(u => u.beginSubcases().combine('awaitLost', [true, false])) + .params(u => u.combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost } = t.params; const cShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('COMPUTE') }); @@ -431,7 +426,7 @@ Tests creating render pipeline on destroyed device. - Tests with valid no-op vertex and fragment shaders ` ) - .params(u => u.beginSubcases().combine('awaitLost', [true, false])) + .params(u => u.combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost } = t.params; const vShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('VERTEX') }); @@ -449,13 +444,177 @@ Tests creating render pipeline on destroyed device. }, awaitLost); }); +g.test('createComputePipelineAsync') + .desc( + ` +Tests creating a pipeline asynchronously while destroying the device and on a destroyed device +- valid={true, false}, use an invalid or valid pipeline descriptor +- awaitLost={true, false}, check results before/after waiting for the device lost promise + ` + ) + .params(u => u.combine('valid', [true, false]).combine('awaitLost', [true, false])) + .fn(async t => { + const { valid, awaitLost } = t.params; + const cShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('COMPUTE') }); + const fn = () => + t.device.createComputePipelineAsync({ + layout: 'auto', + compute: { module: cShader, entryPoint: valid ? 'main' : 'does_not_exist' }, + }); + + // Kick off async creation + const p = fn(); + + // Track whether or not the device is lost. + let isLost = false; + void t.device.lost.then(() => { + isLost = true; + }); + + if (valid) { + // The async creation should resolve successfully. + t.shouldResolve( + (async () => { + const pipeline = await p; + assert(pipeline instanceof GPUComputePipeline, 'Pipeline was not a GPUComputePipeline'); + })() + ); + } else { + // The async creation should resolve successfully if the device is lost. + // If the device is not lost, it should see a validation error. + // Note: this could be a race! + t.shouldResolve( + p.then( + pipeline => { + assert( + isLost, + 'Invalid async creation should "succeed" if the device is already lost.' + ); + + assert(pipeline instanceof GPUComputePipeline, 'Pipeline was not a GPUComputePipeline'); + }, + err => { + assert( + !isLost, + 'Invalid async creation should only fail if the device is not yet lost.' + ); + + assert(err instanceof GPUPipelineError, 'Error was not a GPUPipelineError'); + assert(err.reason === 'validation', 'Expected validation error'); + } + ) + ); + } + + // Destroy the device, and expect it to be lost. + t.expectDeviceLost('destroyed'); + t.device.destroy(); + if (awaitLost) { + const lostInfo = await t.device.lost; + t.expect(lostInfo.reason === 'destroyed'); + } + + // After device destroy, creation should still resolve successfully. + t.shouldResolve( + (async () => { + const pipeline = await fn(); + assert(pipeline instanceof GPUComputePipeline, 'Pipeline was not a GPUComputePipeline'); + })() + ); + }); + +g.test('createRenderPipelineAsync') + .desc( + ` +Tests creating a pipeline asynchronously while destroying the device and on a destroyed device +- valid={true, false}, use an invalid or valid pipeline descriptor +- awaitLost={true, false}, check results before/after waiting for the device lost promise + ` + ) + .params(u => u.combine('valid', [true, false]).combine('awaitLost', [true, false])) + .fn(async t => { + const { valid, awaitLost } = t.params; + const vShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('VERTEX') }); + const fShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('FRAGMENT') }); + const fn = () => + t.device.createRenderPipelineAsync({ + layout: 'auto', + vertex: { module: vShader, entryPoint: 'main' }, + fragment: { + module: fShader, + entryPoint: valid ? 'main' : 'does_not_exist', + targets: [{ format: 'rgba8unorm', writeMask: 0 }], + }, + }); + + // Kick off async creation + const p = fn(); + + // Track whether or not the device is lost. + let isLost = false; + void t.device.lost.then(() => { + isLost = true; + }); + + if (valid) { + // The async creation should resolve successfully. + t.shouldResolve( + (async () => { + const pipeline = await p; + assert(pipeline instanceof GPURenderPipeline, 'Pipeline was not a GPURenderPipeline'); + })() + ); + } else { + // The async creation should resolve successfully if the device is lost. + // If the device is not lost, it should see a validation error. + // Note: this could be a race! + t.shouldResolve( + p.then( + pipeline => { + assert( + isLost, + 'Invalid async creation should "succeed" if the device is already lost.' + ); + + assert(pipeline instanceof GPURenderPipeline, 'Pipeline was not a GPURenderPipeline'); + }, + err => { + assert( + !isLost, + 'Invalid async creation should only fail if the device is not yet lost.' + ); + + assert(err instanceof GPUPipelineError, 'Error was not a GPUPipelineError'); + assert(err.reason === 'validation', 'Expected validation error'); + } + ) + ); + } + + // Destroy the device, and expect it to be lost. + t.expectDeviceLost('destroyed'); + t.device.destroy(); + if (awaitLost) { + const lostInfo = await t.device.lost; + t.expect(lostInfo.reason === 'destroyed'); + } + + // After device destroy, creation should still resolve successfully. + t.shouldResolve( + (async () => { + const pipeline = await fn(); + assert(pipeline instanceof GPURenderPipeline, 'Pipeline was not a GPURenderPipeline'); + })() + ); + }); + g.test('createCommandEncoder') .desc( ` Tests creating command encoders on destroyed device. ` ) - .params(u => u.beginSubcases().combine('awaitLost', [true, false])) + .params(u => u.combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost } = t.params; await t.executeAfterDestroy(() => { @@ -471,10 +630,7 @@ Tests creating render bundle encoders on destroyed device. ` ) .params(u => - u - .combine('format', kRenderableColorTextureFormats) - .beginSubcases() - .combine('awaitLost', [true, false]) + u.combine('format', kRenderableColorTextureFormats).combine('awaitLost', [true, false]) ) .fn(async t => { const { awaitLost, format } = t.params; @@ -490,7 +646,7 @@ Tests creating query sets on destroyed device. - Tests various query set types ` ) - .params(u => u.combine('type', kQueryTypes).beginSubcases().combine('awaitLost', [true, false])) + .params(u => u.combine('type', kQueryTypes).combine('awaitLost', [true, false])) .beforeAllSubcases(t => { const { type } = t.params; t.selectDeviceForQueryTypeOrSkipTestCase(type); @@ -510,10 +666,7 @@ Tests import external texture on destroyed device. Tests valid combinations of: ` ) .params(u => - u - .combine('sourceType', ['VideoElement', 'VideoFrame']) - .beginSubcases() - .combine('awaitLost', [true, false]) + u.combine('sourceType', ['VideoElement', 'VideoFrame']).combine('awaitLost', [true, false]) ) .fn(async t => { const { awaitLost, sourceType } = t.params; @@ -554,9 +707,7 @@ g.test('command,copyBufferToBuffer') Tests copyBufferToBuffer command with various uncompressed formats on destroyed device. ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const kBufferSize = 16; @@ -582,9 +733,7 @@ Tests copyBufferToTexture command on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const format = 'rgba32uint'; @@ -621,9 +770,7 @@ Tests copyTextureToBuffer command on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const format = 'rgba32uint'; @@ -660,9 +807,7 @@ Tests copyTextureToTexture command on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const format = 'rgba32uint'; @@ -696,9 +841,7 @@ Tests encoding and finishing a clearBuffer command on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const kBufferSize = 16; @@ -723,7 +866,6 @@ Tests encoding and finishing a writeTimestamp command on destroyed device. .params(u => u .combine('type', kQueryTypes) - .beginSubcases() .combine('stage', kCommandValidationStages) .combine('awaitLost', [true, false]) ) @@ -755,9 +897,7 @@ Tests encoding and finishing a resolveQuerySet command on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const kQueryCount = 2; @@ -781,9 +921,7 @@ Tests encoding and dispatching a simple valid compute pass on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const cShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('COMPUTE') }); @@ -807,9 +945,7 @@ Tests encoding and finishing a simple valid render pass on destroyed device. - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const vShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('VERTEX') }); @@ -839,9 +975,7 @@ Tests encoding and drawing a render pass including a render bundle on destroyed - Tests submitting command on destroyed device ` ) - .params(u => - u.beginSubcases().combine('stage', kCommandValidationStages).combine('awaitLost', [true, false]) - ) + .params(u => u.combine('stage', kCommandValidationStages).combine('awaitLost', [true, false])) .fn(async t => { const { stage, awaitLost } = t.params; const vShader = t.device.createShaderModule({ code: t.getNoOpShaderCode('VERTEX') }); @@ -868,9 +1002,7 @@ g.test('queue,writeBuffer') Tests writeBuffer on queue on destroyed device. ` ) - .params(u => - u.combine('numElements', [4, 8, 16]).beginSubcases().combine('awaitLost', [true, false]) - ) + .params(u => u.combine('numElements', [4, 8, 16]).combine('awaitLost', [true, false])) .fn(async t => { const { numElements, awaitLost } = t.params; const buffer = t.device.createBuffer({ @@ -889,9 +1021,10 @@ g.test('queue,writeTexture,2d,uncompressed_format') Tests writeTexture on queue on destroyed device with uncompressed formats. ` ) - .params(u => - u.combine('format', kRegularTextureFormats).beginSubcases().combine('awaitLost', [true, false]) - ) + .params(u => u.combine('format', kRegularTextureFormats).combine('awaitLost', [true, false])) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(async t => { const { format, awaitLost } = t.params; const { @@ -921,12 +1054,7 @@ g.test('queue,writeTexture,2d,compressed_format') Tests writeTexture on queue on destroyed device with compressed formats. ` ) - .params(u => - u - .combine('format', kCompressedTextureFormats) - .beginSubcases() - .combine('awaitLost', [true, false]) - ) + .params(u => u.combine('format', kCompressedTextureFormats).combine('awaitLost', [true, false])) .beforeAllSubcases(t => { const { format } = t.params; t.selectDeviceOrSkipTestCase(kTextureFormatInfo[format].feature); @@ -964,7 +1092,6 @@ Tests copyExternalImageToTexture from canvas on queue on destroyed device. u .combine('canvasType', kAllCanvasTypes) .combine('contextType', kValidCanvasContextIds) - .beginSubcases() .combine('awaitLost', [true, false]) ) .fn(async t => { @@ -998,7 +1125,7 @@ g.test('queue,copyExternalImageToTexture,imageBitmap') Tests copyExternalImageToTexture from canvas on queue on destroyed device. ` ) - .params(u => u.beginSubcases().combine('awaitLost', [true, false])) + .params(u => u.combine('awaitLost', [true, false])) .fn(async t => { const { awaitLost } = t.params; if (typeof createImageBitmap === 'undefined') { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/capability_info.js b/tests/wpt/webgpu/tests/webgpu/webgpu/capability_info.js index 681128f34eb..e8470544872 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/capability_info.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/capability_info.js @@ -3,7 +3,12 @@ **/ // MAINTENANCE_TODO: The generated Typedoc for this file is hard to navigate because it's // alphabetized. Consider using namespaces or renames to fix this? -import { keysOf, makeTable, numericKeysOf } from '../common/util/data_tables.js'; +import { + keysOf, + makeTable, + makeTableRenameAndFilter, + numericKeysOf, +} from '../common/util/data_tables.js'; import { assertTypeTrue } from '../common/util/types.js'; import { unreachable } from '../common/util/util.js'; @@ -263,22 +268,22 @@ export const kMinDynamicBufferOffsetAlignment = 256; /** Default `PerShaderStage` binding limits, by spec. */ export const kPerStageBindingLimits = { - uniformBuf: { class: 'uniformBuf', max: 12 }, - storageBuf: { class: 'storageBuf', max: 8 }, - sampler: { class: 'sampler', max: 16 }, - sampledTex: { class: 'sampledTex', max: 16 }, - storageTex: { class: 'storageTex', max: 4 }, + uniformBuf: { class: 'uniformBuf', maxLimit: 'maxUniformBuffersPerShaderStage' }, + storageBuf: { class: 'storageBuf', maxLimit: 'maxStorageBuffersPerShaderStage' }, + sampler: { class: 'sampler', maxLimit: 'maxSamplersPerShaderStage' }, + sampledTex: { class: 'sampledTex', maxLimit: 'maxSampledTexturesPerShaderStage' }, + storageTex: { class: 'storageTex', maxLimit: 'maxStorageTexturesPerShaderStage' }, }; /** * Default `PerPipelineLayout` binding limits, by spec. */ export const kPerPipelineBindingLimits = { - uniformBuf: { class: 'uniformBuf', maxDynamic: 8 }, - storageBuf: { class: 'storageBuf', maxDynamic: 4 }, - sampler: { class: 'sampler', maxDynamic: 0 }, - sampledTex: { class: 'sampledTex', maxDynamic: 0 }, - storageTex: { class: 'storageTex', maxDynamic: 0 }, + uniformBuf: { class: 'uniformBuf', maxDynamicLimit: 'maxDynamicUniformBuffersPerPipelineLayout' }, + storageBuf: { class: 'storageBuf', maxDynamicLimit: 'maxDynamicStorageBuffersPerPipelineLayout' }, + sampler: { class: 'sampler', maxDynamicLimit: '' }, + sampledTex: { class: 'sampledTex', maxDynamicLimit: '' }, + storageTex: { class: 'storageTex', maxDynamicLimit: '' }, }; const kBindingKind = { @@ -515,6 +520,17 @@ export const kShaderStageCombinationsWithStage = [1, 2, 3, 4, 5, 6, 7]; */ export const kTextureSampleCounts = [1, 4]; +// Sampler info + +/** List of all mipmap filter modes. */ +export const kMipmapFilterModes = ['nearest', 'linear']; +assertTypeTrue(); + +/** List of address modes. */ +export const kAddressModes = ['clamp-to-edge', 'repeat', 'mirror-repeat']; + +assertTypeTrue(); + // Blend factors and Blend components /** List of all GPUBlendFactor values. */ @@ -558,62 +574,107 @@ export const kIndexFormat = ['uint16', 'uint32']; assertTypeTrue(); /** Info for each entry of GPUSupportedLimits */ -export const kLimitInfo = makeTable( - ['class', 'default', 'maximumValue'], - ['maximum', , kMaxUnsignedLongValue], +const [kLimitInfoKeys, kLimitInfoDefaults, kLimitInfoData] = [ + ['class', 'core', 'compatibility', 'maximumValue'], + ['maximum', , , kMaxUnsignedLongValue], { - maxTextureDimension1D: [, 8192], - maxTextureDimension2D: [, 8192], - maxTextureDimension3D: [, 2048], - maxTextureArrayLayers: [, 256], + maxTextureDimension1D: [, 8192, 4096], + maxTextureDimension2D: [, 8192, 4096], + maxTextureDimension3D: [, 2048, 1024], + maxTextureArrayLayers: [, 256, 256], - maxBindGroups: [, 4], - maxBindingsPerBindGroup: [, 1000], - maxDynamicUniformBuffersPerPipelineLayout: [, 8], - maxDynamicStorageBuffersPerPipelineLayout: [, 4], - maxSampledTexturesPerShaderStage: [, 16], - maxSamplersPerShaderStage: [, 16], - maxStorageBuffersPerShaderStage: [, 8], - maxStorageTexturesPerShaderStage: [, 4], - maxUniformBuffersPerShaderStage: [, 12], + maxBindGroups: [, 4, 4], + maxBindingsPerBindGroup: [, 1000, 1000], + maxDynamicUniformBuffersPerPipelineLayout: [, 8, 8], + maxDynamicStorageBuffersPerPipelineLayout: [, 4, 4], + maxSampledTexturesPerShaderStage: [, 16, 16], + maxSamplersPerShaderStage: [, 16, 16], + maxStorageBuffersPerShaderStage: [, 8, 4], + maxStorageTexturesPerShaderStage: [, 4, 4], + maxUniformBuffersPerShaderStage: [, 12, 12], - maxUniformBufferBindingSize: [, 65536, kMaxUnsignedLongLongValue], - maxStorageBufferBindingSize: [, 134217728, kMaxUnsignedLongLongValue], - minUniformBufferOffsetAlignment: ['alignment', 256], - minStorageBufferOffsetAlignment: ['alignment', 256], + maxUniformBufferBindingSize: [, 65536, 16384, kMaxUnsignedLongLongValue], + maxStorageBufferBindingSize: [, 134217728, 134217728, kMaxUnsignedLongLongValue], + minUniformBufferOffsetAlignment: ['alignment', 256, 256], + minStorageBufferOffsetAlignment: ['alignment', 256, 256], - maxVertexBuffers: [, 8], - maxBufferSize: [, 268435456, kMaxUnsignedLongLongValue], - maxVertexAttributes: [, 16], - maxVertexBufferArrayStride: [, 2048], - maxInterStageShaderComponents: [, 60], - maxInterStageShaderVariables: [, 16], + maxVertexBuffers: [, 8, 8], + maxBufferSize: [, 268435456, 268435456, kMaxUnsignedLongLongValue], + maxVertexAttributes: [, 16, 16], + maxVertexBufferArrayStride: [, 2048, 2048], + maxInterStageShaderComponents: [, 60, 60], + maxInterStageShaderVariables: [, 16, 16], - maxColorAttachments: [, 8], - maxColorAttachmentBytesPerSample: [, 32], + maxColorAttachments: [, 8, 4], + maxColorAttachmentBytesPerSample: [, 32, 32], - maxComputeWorkgroupStorageSize: [, 16384], - maxComputeInvocationsPerWorkgroup: [, 256], - maxComputeWorkgroupSizeX: [, 256], - maxComputeWorkgroupSizeY: [, 256], - maxComputeWorkgroupSizeZ: [, 64], - maxComputeWorkgroupsPerDimension: [, 65535], - } + maxComputeWorkgroupStorageSize: [, 16384, 16384], + maxComputeInvocationsPerWorkgroup: [, 256, 128], + maxComputeWorkgroupSizeX: [, 256, 128], + maxComputeWorkgroupSizeY: [, 256, 128], + maxComputeWorkgroupSizeZ: [, 64, 64], + maxComputeWorkgroupsPerDimension: [, 65535, 65535], + }, +]; + +/** + * Feature levels corresponding to core WebGPU and WebGPU + * in compatibility mode. They can be passed to + * getDefaultLimits though if you have access to an adapter + * it's preferred to use getDefaultLimitsForAdapter. + */ +export const kFeatureLevels = ['core', 'compatibility']; + +const kLimitKeys = ['class', 'default', 'maximumValue']; + +const kLimitInfoCore = makeTableRenameAndFilter( + { default: 'core' }, + kLimitKeys, + kLimitInfoKeys, + kLimitInfoDefaults, + kLimitInfoData ); +const kLimitInfoCompatibility = makeTableRenameAndFilter( + { default: 'compatibility' }, + kLimitKeys, + kLimitInfoKeys, + kLimitInfoDefaults, + kLimitInfoData +); + +const kLimitInfos = { + core: kLimitInfoCore, + compatibility: kLimitInfoCompatibility, +}; + +export const kLimitClasses = Object.fromEntries( + Object.entries(kLimitInfoCore).map(([k, { class: c }]) => [k, c]) +); + +export function getDefaultLimits(featureLevel) { + return kLimitInfos[featureLevel]; +} + +export function getDefaultLimitsForAdapter(adapter) { + // MAINTENANCE_TODO: Remove casts when GPUAdapter IDL has isCompatibilityMode. + return getDefaultLimits(adapter.isCompatibilityMode ? 'compatibility' : 'core'); +} + /** List of all entries of GPUSupportedLimits. */ -export const kLimits = keysOf(kLimitInfo); +export const kLimits = keysOf(kLimitInfoCore); -// Pipeline limits - -/** Maximum number of color attachments to a render pass, by spec. */ -export const kMaxColorAttachments = kLimitInfo.maxColorAttachments.default; -/** `maxVertexBuffers` per GPURenderPipeline, by spec. */ -export const kMaxVertexBuffers = kLimitInfo.maxVertexBuffers.default; -/** `maxVertexAttributes` per GPURenderPipeline, by spec. */ -export const kMaxVertexAttributes = kLimitInfo.maxVertexAttributes.default; -/** `maxVertexBufferArrayStride` in a vertex buffer in a GPURenderPipeline, by spec. */ -export const kMaxVertexBufferArrayStride = kLimitInfo.maxVertexBufferArrayStride.default; +/** + * The number of color attachments to test. + * The CTS needs to generate a consistent list of tests. + * We can't use any default limits since they different from core to compat mode + * So, tests should use this value and filter out any values that are out of + * range for the current device. + * + * The test in maxColorAttachments.spec.ts tests that kMaxColorAttachmentsToTest + * is large enough to cover all devices tested. + */ +export const kMaxColorAttachmentsToTest = 32; /** The size of indirect draw parameters in the indirectBuffer of drawIndirect */ export const kDrawIndirectParametersSize = 4; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/cmds/copyTextureToBuffer.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/cmds/copyTextureToBuffer.spec.js new file mode 100644 index 00000000000..b2d8d247177 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/cmds/copyTextureToBuffer.spec.js @@ -0,0 +1,45 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests limitations of copyTextureToBuffer in compat mode. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { kCompressedTextureFormats, kTextureFormatInfo } from '../../../../../format_info.js'; +import { align } from '../../../../../util/math.js'; +import { CompatibilityTest } from '../../../../compatibility_test.js'; + +export const g = makeTestGroup(CompatibilityTest); + +g.test('compressed') + .desc(`Tests that you can not call copyTextureToBuffer with compressed textures in compat mode.`) + .params(u => u.combine('format', kCompressedTextureFormats)) + .beforeAllSubcases(t => { + const { format } = t.params; + t.selectDeviceOrSkipTestCase([kTextureFormatInfo[format].feature]); + }) + .fn(t => { + const { format } = t.params; + + const { blockWidth, blockHeight, bytesPerBlock } = kTextureFormatInfo[format]; + + const texture = t.device.createTexture({ + size: [blockWidth, blockHeight, 1], + format, + usage: GPUTextureUsage.COPY_SRC, + }); + t.trackForCleanup(texture); + + const bytesPerRow = align(bytesPerBlock, 256); + + const buffer = t.device.createBuffer({ + size: bytesPerRow, + usage: GPUBufferUsage.COPY_DST, + }); + t.trackForCleanup(buffer); + + const encoder = t.device.createCommandEncoder(); + encoder.copyTextureToBuffer({ texture }, { buffer, bytesPerRow }, [blockWidth, blockHeight, 1]); + t.expectGPUError('validation', () => { + encoder.finish(); + }); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js new file mode 100644 index 00000000000..33952b9e53b --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js @@ -0,0 +1,391 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests limitations of bind group usage in a pipeline in compat mode. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../../common/util/data_tables.js'; +import { kRenderEncodeTypes } from '../../../../../util/command_buffer_maker.js'; +import { CompatibilityTest } from '../../../../compatibility_test.js'; + +const kTextureTypes = ['regular', 'storage']; + +function getTextureTypeWGSL(textureType) { + return textureType === 'storage' ? 'texture_storage_2d' : 'texture_2d'; +} + +/** + * Gets the WGSL needed for testing a render pipeline using texture_2d or texture_storage_2d + * and either 2 bindgroups or 1 + */ +function getRenderShaderModule(device, textureType, bindConfig) { + const textureTypeWGSL = getTextureTypeWGSL(textureType); + const secondGroup = bindConfig === 'one bindgroup' ? 0 : 1; + const secondBinding = secondGroup === 0 ? 1 : 0; + return device.createShaderModule({ + code: ` + @vertex + fn vs(@builtin(vertex_index) VertexIndex : u32) -> @builtin(position) vec4f { + var pos = array( + vec4f(-1, 3, 0, 1), + vec4f( 3, -1, 0, 1), + vec4f(-1, -1, 0, 1)); + return pos[VertexIndex]; + } + + @group(0) @binding(0) var tex0 : ${textureTypeWGSL}; + @group(${secondGroup}) @binding(${secondBinding}) var tex1 : ${textureTypeWGSL}; + + @fragment + fn fs(@builtin(position) pos: vec4f) -> @location(0) vec4f { + _ = tex0; + _ = tex1; + return vec4f(0); + } + `, + }); +} + +/** + * Gets the WGSL needed for testing a compute pipeline using texture_2d or texture_storage_2d + * and either 2 bindgroups or 1 + */ +function getComputeShaderModule(device, textureType, bindConfig) { + const textureTypeWGSL = getTextureTypeWGSL(textureType); + const secondGroup = bindConfig === 'one bindgroup' ? 0 : 1; + const secondBinding = secondGroup === 0 ? 1 : 0; + return device.createShaderModule({ + code: ` + @group(0) @binding(0) var tex0 : ${textureTypeWGSL}; + @group(${secondGroup}) @binding(${secondBinding}) var tex1 : ${textureTypeWGSL}; + + @compute @workgroup_size(1) + fn cs() { + _ = tex0; + _ = tex1; + } + `, + }); +} + +const kBindCases = { + 'incompatible views in the same bindGroup': { + bindConfig: 'one bindgroup', + fn(device, pipeline, encoder, texture) { + const bindGroup = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 0, mipLevelCount: 1 }) }, + { binding: 1, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + ], + }); + encoder.setBindGroup(0, bindGroup); + return { shouldSucceed: false }; + }, + }, + 'incompatible views in different bindGroups': { + bindConfig: 'two bindgroups', + fn(device, pipeline, encoder, texture) { + const bindGroup0 = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 0, mipLevelCount: 1 }) }, + ], + }); + const bindGroup1 = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(1), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + ], + }); + encoder.setBindGroup(0, bindGroup0); + encoder.setBindGroup(1, bindGroup1); + return { shouldSucceed: false }; + }, + }, + 'can bind same view in different bindGroups': { + bindConfig: 'two bindgroups', + fn(device, pipeline, encoder, texture) { + const bindGroup0 = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + ], + }); + const bindGroup1 = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(1), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + ], + }); + encoder.setBindGroup(0, bindGroup0); + encoder.setBindGroup(1, bindGroup1); + return { shouldSucceed: true }; + }, + }, + 'binding incompatible bindGroups then fix': { + bindConfig: 'one bindgroup', + fn(device, pipeline, encoder, texture) { + const badBindGroup = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 0, mipLevelCount: 1 }) }, + { binding: 1, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + ], + }); + const goodBindGroup = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + { binding: 1, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }, + ], + }); + encoder.setBindGroup(0, badBindGroup); + encoder.setBindGroup(0, goodBindGroup); + return { shouldSucceed: true }; + }, + }, +}; + +function createAndBindTwoBindGroupsWithDifferentViewsOfSameTexture( + device, + pipeline, + encoder, + texture +) { + const bindGroup0 = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [{ binding: 0, resource: texture.createView({ baseMipLevel: 0, mipLevelCount: 1 }) }], + }); + const bindGroup1 = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(1), + entries: [{ binding: 0, resource: texture.createView({ baseMipLevel: 1, mipLevelCount: 1 }) }], + }); + encoder.setBindGroup(0, bindGroup0); + encoder.setBindGroup(1, bindGroup1); +} + +const kBindCaseNames = keysOf(kBindCases); + +const kDrawUseCases = { + draw: (t, encoder) => { + encoder.draw(3); + }, + drawIndexed: (t, encoder) => { + const indexBuffer = t.makeBufferWithContents(new Uint16Array([0, 1, 2]), GPUBufferUsage.INDEX); + encoder.setIndexBuffer(indexBuffer, 'uint16'); + encoder.drawIndexed(3); + }, + drawIndirect(t, encoder) { + const indirectBuffer = t.makeBufferWithContents( + new Uint32Array([3, 1, 0, 0]), + GPUBufferUsage.INDIRECT + ); + + encoder.drawIndirect(indirectBuffer, 0); + }, + drawIndexedIndirect(t, encoder) { + const indexBuffer = t.makeBufferWithContents(new Uint16Array([0, 1, 2]), GPUBufferUsage.INDEX); + encoder.setIndexBuffer(indexBuffer, 'uint16'); + const indirectBuffer = t.makeBufferWithContents( + new Uint32Array([3, 1, 0, 0, 0]), + GPUBufferUsage.INDIRECT + ); + + encoder.drawIndexedIndirect(indirectBuffer, 0); + }, +}; +const kDrawCaseNames = keysOf(kDrawUseCases); + +const kDispatchUseCases = { + dispatchWorkgroups(t, encoder) { + encoder.dispatchWorkgroups(1); + }, + dispatchWorkgroupsIndirect(t, encoder) { + const indirectBuffer = t.makeBufferWithContents( + new Uint32Array([1, 1, 1]), + GPUBufferUsage.INDIRECT + ); + + encoder.dispatchWorkgroupsIndirect(indirectBuffer, 0); + }, +}; +const kDispatchCaseNames = keysOf(kDispatchUseCases); + +function createResourcesForRenderPassTest(t, textureType, bindConfig) { + const texture = t.device.createTexture({ + size: [2, 1, 1], + mipLevelCount: 2, + format: 'rgba8unorm', + usage: + textureType === 'storage' ? GPUTextureUsage.STORAGE_BINDING : GPUTextureUsage.TEXTURE_BINDING, + }); + t.trackForCleanup(texture); + + const module = getRenderShaderModule(t.device, textureType, bindConfig); + const pipeline = t.device.createRenderPipeline({ + layout: 'auto', + vertex: { + module, + entryPoint: 'vs', + }, + fragment: { + module, + entryPoint: 'fs', + targets: [{ format: 'rgba8unorm' }], + }, + }); + + return { texture, pipeline }; +} + +function createResourcesForComputePassTest(t, textureType, bindConfig) { + const texture = t.device.createTexture({ + size: [2, 1, 1], + mipLevelCount: 2, + format: 'rgba8unorm', + usage: + textureType === 'storage' ? GPUTextureUsage.STORAGE_BINDING : GPUTextureUsage.TEXTURE_BINDING, + }); + t.trackForCleanup(texture); + + const module = getComputeShaderModule(t.device, textureType, bindConfig); + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module, + entryPoint: 'cs', + }, + }); + + return { texture, pipeline }; +} + +export const g = makeTestGroup(CompatibilityTest); + +g.test('twoDifferentTextureViews,render_pass,used') + .desc( + ` +Tests that you can not use 2 different views of the same texture in a render pass in compat mode. + +- Test you can not use incompatible views in the same bindGroup +- Test you can not use incompatible views in different bindGroups +- Test you can bind the same view in different bindGroups +- Test binding incompatible bindGroups is ok as long as they are fixed before draw/dispatch + + The last test is to check validation happens at the correct time (draw/dispatch) and not + at setBindGroup. + ` + ) + .params(u => + u + .combine('encoderType', kRenderEncodeTypes) + .combine('bindCase', kBindCaseNames) + .combine('useCase', kDrawCaseNames) + .combine('textureType', kTextureTypes) + .filter( + // storage textures can't have 2 bind groups point to the same + // view even in non-compat. They can have different views in + // non-compat but not compat. + p => + !( + p.textureType === 'storage' && + (p.bindCase === 'can bind same view in different bindGroups' || + p.bindCase === 'binding incompatible bindGroups then fix') + ) + ) + ) + .fn(t => { + const { encoderType, bindCase, useCase, textureType } = t.params; + const { bindConfig, fn } = kBindCases[bindCase]; + const { texture, pipeline } = createResourcesForRenderPassTest(t, textureType, bindConfig); + const { encoder, validateFinish } = t.createEncoder(encoderType); + encoder.setPipeline(pipeline); + const { shouldSucceed } = fn(t.device, pipeline, encoder, texture); + kDrawUseCases[useCase](t, encoder); + validateFinish(shouldSucceed); + }); + +g.test('twoDifferentTextureViews,render_pass,unused') + .desc( + ` +Tests that binding 2 different views of the same texture but not using them does not generate a validation error. + ` + ) + .params(u => u.combine('encoderType', kRenderEncodeTypes).combine('textureType', kTextureTypes)) + .fn(t => { + const { encoderType, textureType } = t.params; + const { texture, pipeline } = createResourcesForRenderPassTest( + t, + textureType, + 'two bindgroups' + ); + + const { encoder, validateFinish } = t.createEncoder(encoderType); + encoder.setPipeline(pipeline); + createAndBindTwoBindGroupsWithDifferentViewsOfSameTexture(t.device, pipeline, encoder, texture); + validateFinish(true); + }); + +g.test('twoDifferentTextureViews,compute_pass,used') + .desc( + ` +Tests that you can not use 2 different views of the same texture in a compute pass in compat mode. + +- Test you can not use incompatible views in the same bindGroup +- Test you can not use incompatible views in different bindGroups +- Test can bind the same view in different bindGroups +- Test that binding incompatible bindGroups is ok as long as they are fixed before draw/dispatch + + The last test is to check validation happens at the correct time (draw/dispatch) and not + at setBindGroup. + ` + ) + .params(u => + u + .combine('bindCase', kBindCaseNames) + .combine('useCase', kDispatchCaseNames) + .combine('textureType', kTextureTypes) + .filter( + // storage textures can't have 2 bind groups point to the same + // view even in non-compat. They can have different views in + // non-compat but not compat. + p => + !( + p.textureType === 'storage' && + (p.bindCase === 'can bind same view in different bindGroups' || + p.bindCase === 'binding incompatible bindGroups then fix') + ) + ) + ) + .fn(t => { + const { bindCase, useCase, textureType } = t.params; + const { bindConfig, fn } = kBindCases[bindCase]; + const { texture, pipeline } = createResourcesForComputePassTest(t, textureType, bindConfig); + const { encoder, validateFinish } = t.createEncoder('compute pass'); + encoder.setPipeline(pipeline); + const { shouldSucceed } = fn(t.device, pipeline, encoder, texture); + kDispatchUseCases[useCase](t, encoder); + validateFinish(shouldSucceed); + }); + +g.test('twoDifferentTextureViews,compute_pass,unused') + .desc( + ` +Tests that binding 2 different views of the same texture but not using them does not generate a validation error. + ` + ) + .params(u => u.combine('textureType', kTextureTypes)) + .fn(t => { + const { textureType } = t.params; + const { texture, pipeline } = createResourcesForComputePassTest( + t, + textureType, + 'two bindgroups' + ); + + const { encoder, validateFinish } = t.createEncoder('compute pass'); + encoder.setPipeline(pipeline); + createAndBindTwoBindGroupsWithDifferentViewsOfSameTexture(t.device, pipeline, encoder, texture); + validateFinish(true); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/fragment_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/fragment_state.spec.js new file mode 100644 index 00000000000..b3c79f67528 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/fragment_state.spec.js @@ -0,0 +1,127 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests that you can not create a render pipeline with different per target blend state or write mask in compat mode. +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../common/util/data_tables.js'; +import { CompatibilityTest } from '../../../compatibility_test.js'; + +export const g = makeTestGroup(CompatibilityTest); + +const cases = { + default(targets) { + return true; + }, + noBlendTarget0(targets) { + delete targets[0].blend; + return false; + }, + noBlendTarget1(targets) { + delete targets[2].blend; + return false; + }, + colorOperation(targets) { + targets[2].blend.color.operation = 'subtract'; + return false; + }, + colorSrcFactor(targets) { + targets[2].blend.color.srcFactor = 'src-alpha'; + return false; + }, + colorDstFactor(targets) { + targets[2].blend.color.dstFactor = 'dst-alpha'; + return false; + }, + alphaOperation(targets) { + targets[2].blend.alpha.operation = 'subtract'; + return false; + }, + alphaSrcFactor(targets) { + targets[2].blend.alpha.srcFactor = 'src-alpha'; + return false; + }, + alphaDstFactor(targets) { + targets[2].blend.alpha.dstFactor = 'dst-alpha'; + return false; + }, + writeMask(targets) { + targets[2].writeMask = GPUColorWrite.GREEN; + return false; + }, +}; +const caseNames = keysOf(cases); + +g.test('colorState') + .desc( + ` +Tests that you can not create a render pipeline with different per target blend state or write mask in compat mode. + +- Test no blend state vs some blend state +- Test different operation, srcFactor, dstFactor for color and alpha +- Test different writeMask + ` + ) + .params(u => u.combine('caseName', caseNames)) + .fn(t => { + const { caseName } = t.params; + + const module = t.device.createShaderModule({ + code: ` + @vertex fn vs() -> @builtin(position) vec4f { + return vec4f(0); + } + + struct FragmentOut { + @location(0) fragColor0 : vec4f, + @location(1) fragColor1 : vec4f, + @location(2) fragColor2 : vec4f, + } + + @fragment fn fs() -> FragmentOut { + var output : FragmentOut; + output.fragColor0 = vec4f(0); + output.fragColor1 = vec4f(0); + output.fragColor2 = vec4f(0); + return output; + } + `, + }); + + const targets = [ + { + format: 'rgba8unorm', + blend: { + color: {}, + alpha: {}, + }, + }, + null, + { + format: 'rgba8unorm', + blend: { + color: {}, + alpha: {}, + }, + }, + ]; + + const pipelineDescriptor = { + layout: 'auto', + vertex: { + module, + entryPoint: 'vs', + }, + fragment: { + module, + entryPoint: 'fs', + targets, + }, + }; + const isValid = cases[caseName](targets); + t.expectGPUError( + 'validation', + () => t.device.createRenderPipeline(pipelineDescriptor), + !isValid + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/shader_module.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/shader_module.spec.js new file mode 100644 index 00000000000..b20e11b3ae4 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/shader_module.spec.js @@ -0,0 +1,73 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests limitations of createRenderPipeline related to shader modules in compat mode. +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { CompatibilityTest } from '../../../compatibility_test.js'; + +export const g = makeTestGroup(CompatibilityTest); + +g.test('sample_mask') + .desc( + ` +Tests that you can not create a render pipeline with a shader module that uses sample_mask in compat mode. + +- Test that a pipeline with a shader that uses sample_mask fails. +- Test that a pipeline that references a module that has a shader that uses sample_mask + but the pipeline does not reference that shader succeeds. + ` + ) + .params(u => u.combine('entryPoint', ['fsWithoutSampleMaskUsage', 'fsWithSampleMaskUsage'])) + .fn(t => { + const { entryPoint } = t.params; + + const module = t.device.createShaderModule({ + code: ` + @vertex fn vs() -> @builtin(position) vec4f { + return vec4f(1); + } + struct Output { + @builtin(sample_mask) mask_out: u32, + @location(0) color : vec4f, + } + @fragment fn fsWithoutSampleMaskUsage() -> @location(0) vec4f { + return vec4f(1.0, 1.0, 1.0, 1.0); + } + @fragment fn fsWithSampleMaskUsage() -> Output { + var o: Output; + // We need to make sure this sample_mask isn't optimized out even if its value equals "no op". + o.mask_out = 0xFFFFFFFFu; + o.color = vec4f(1.0, 1.0, 1.0, 1.0); + return o; + } + `, + }); + + const pipelineDescriptor = { + layout: 'auto', + vertex: { + module, + entryPoint: 'vs', + }, + fragment: { + module, + entryPoint, + targets: [ + { + format: 'rgba8unorm', + }, + ], + }, + multisample: { + count: 4, + }, + }; + + const isValid = entryPoint === 'fsWithoutSampleMaskUsage'; + t.expectGPUError( + 'validation', + () => t.device.createRenderPipeline(pipelineDescriptor), + !isValid + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/vertex_state.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/vertex_state.spec.js new file mode 100644 index 00000000000..c1c12910812 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/render_pipeline/vertex_state.spec.js @@ -0,0 +1,92 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests limitations of createRenderPipeline related to vertex state in compat mode. +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { range } from '../../../../../common/util/util.js'; +import { CompatibilityTest } from '../../../compatibility_test.js'; + +export const g = makeTestGroup(CompatibilityTest); + +g.test('maxVertexAttributesVertexIndexInstanceIndex') + .desc( + ` +Tests @builtin(vertex_index) and @builtin(instance_index) each count as an attribute. + +- Test that you can use maxVertexAttributes +- Test that you can not use maxVertexAttributes and @builtin(vertex_index) +- Test that you can not use maxVertexAttributes and @builtin(instance_index) +- Test that you can use maxVertexAttributes - 1 and @builtin(vertex_index) +- Test that you can use maxVertexAttributes - 1 and @builtin(instance_index) +- Test that you can not use maxVertexAttributes - 1 and both @builtin(vertex_index) and @builtin(instance_index) +- Test that you can use maxVertexAttributes - 2 and both @builtin(vertex_index) and @builtin(instance_index) + ` + ) + .params(u => + u + .combine('useVertexIndex', [false, true]) + .combine('useInstanceIndex', [false, true]) + .combine('numAttribsToReserve', [0, 1, 2]) + .combine('isAsync', [false, true]) + ) + .fn(t => { + const { useVertexIndex, useInstanceIndex, numAttribsToReserve, isAsync } = t.params; + const numAttribs = t.device.limits.maxVertexAttributes - numAttribsToReserve; + + const numBuiltinsUsed = (useVertexIndex ? 1 : 0) + (useInstanceIndex ? 1 : 0); + const isValid = numAttribs + numBuiltinsUsed <= t.device.limits.maxVertexAttributes; + + const inputs = range(numAttribs, i => `@location(${i}) v${i}: vec4f`); + const outputs = range(numAttribs, i => `v${i}`); + + if (useVertexIndex) { + inputs.push('@builtin(vertex_index) vNdx: u32'); + outputs.push('vec4f(f32(vNdx))'); + } + + if (useInstanceIndex) { + inputs.push('@builtin(instance_index) iNdx: u32'); + outputs.push('vec4f(f32(iNdx))'); + } + + const module = t.device.createShaderModule({ + code: ` + @fragment fn fs() -> @location(0) vec4f { + return vec4f(1); + } + @vertex fn vs(${inputs.join(', ')}) -> @builtin(position) vec4f { + return ${outputs.join(' + ')}; + } + `, + }); + + const pipelineDescriptor = { + layout: 'auto', + vertex: { + module, + entryPoint: 'vs', + buffers: [ + { + arrayStride: 16, + attributes: range(numAttribs, i => ({ + shaderLocation: i, + format: 'float32x4', + offset: 0, + })), + }, + ], + }, + fragment: { + module, + entryPoint: 'fs', + targets: [ + { + format: 'rgba8unorm', + }, + ], + }, + }; + + t.doCreateRenderPipelineTest(isAsync, isValid, pipelineDescriptor); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/createTexture.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/createTexture.spec.js new file mode 100644 index 00000000000..9104a4293fa --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/createTexture.spec.js @@ -0,0 +1,42 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests that you can not use bgra8unorm-srgb in compat mode. +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { CompatibilityTest } from '../../../compatibility_test.js'; + +export const g = makeTestGroup(CompatibilityTest); + +g.test('unsupportedTextureFormats') + .desc(`Tests that you can not create a bgra8unorm-srgb texture in compat mode.`) + .fn(t => { + t.expectGPUError( + 'validation', + () => + t.device.createTexture({ + size: [1, 1, 1], + format: 'bgra8unorm-srgb', + usage: GPUTextureUsage.TEXTURE_BINDING, + }), + true + ); + }); + +g.test('unsupportedTextureViewFormats') + .desc( + `Tests that you can not create a bgra8unorm texture with a bgra8unorm-srgb viewFormat in compat mode.` + ) + .fn(t => { + t.expectGPUError( + 'validation', + () => + t.device.createTexture({ + size: [1, 1, 1], + format: 'bgra8unorm', + viewFormats: ['bgra8unorm-srgb'], + usage: GPUTextureUsage.TEXTURE_BINDING, + }), + true + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/cubeArray.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/cubeArray.spec.js new file mode 100644 index 00000000000..9222c336c0f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/api/validation/texture/cubeArray.spec.js @@ -0,0 +1,27 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Tests that you can not create cube array views in compat mode. +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { CompatibilityTest } from '../../../compatibility_test.js'; + +export const g = makeTestGroup(CompatibilityTest); +g.test('cube_array') + .desc('Test you cannot create a cube array texture view.') + .params(u => u.combine('dimension', ['cube', 'cube-array'])) + .fn(t => { + const { dimension } = t.params; + const texture = t.device.createTexture({ + size: [1, 1, 6], + format: 'rgba8unorm', + usage: GPUTextureUsage.TEXTURE_BINDING, + }); + + const isValid = dimension === 'cube'; + t.expectGPUError( + 'validation', + () => texture.createView({ dimension, format: 'rgba8unorm' }), + !isValid + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/compat/compatibility_test.js b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/compatibility_test.js new file mode 100644 index 00000000000..f611626d4f0 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/compat/compatibility_test.js @@ -0,0 +1,11 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { ValidationTest } from '../api/validation/validation_test.js'; +export class CompatibilityTest extends ValidationTest { + async init() { + await super.init(); + if (!this.isCompatibility) { + this.skip('compatibility tests do not work on non-compatibility mode'); + } + } +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/format_info.js b/tests/wpt/webgpu/tests/webgpu/webgpu/format_info.js index 5aebecddba9..5a69d983b90 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/format_info.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/format_info.js @@ -2,6 +2,7 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { keysOf } from '../common/util/data_tables.js'; import { assert } from '../common/util/util.js'; +import { align } from './util/math.js'; // // Texture format tables @@ -644,6 +645,24 @@ const kRegularTextureFormatInfo = formatTableWithDefaults({ // plain, mixed component width, 32 bits per texel + rgb10a2uint: { + color: { type: 'uint', copySrc: true, copyDst: true, storage: false, bytes: 4 }, + colorRender: { blend: false, resolve: false, byteCost: 8, alignment: 4 }, + renderable: true, + get renderTargetComponentAlignment() { + return this.colorRender.alignment; + }, + get renderTargetPixelByteCost() { + return this.colorRender.byteCost; + }, + multisample: true, + get sampleType() { + return this.color.type; + }, + get bytesPerBlock() { + return this.color.bytes; + }, + }, rgb10a2unorm: { color: { type: 'float', copySrc: true, copyDst: true, storage: false, bytes: 4 }, colorRender: { blend: true, resolve: true, byteCost: 8, alignment: 4 }, @@ -1471,4 +1490,28 @@ export function filterFormatsByFeature(feature, formats) { return formats.filter(f => f === undefined || kTextureFormatInfo[f].feature === feature); } +export function isCompressedTextureFormat(format) { + return format in kCompressedTextureFormatInfo; +} + export const kFeaturesForFormats = getFeaturesForFormats(kTextureFormats); + +/** + * Given an array of texture formats return the number of bytes per sample. + */ +export function computeBytesPerSampleFromFormats(formats) { + let bytesPerSample = 0; + for (const format of formats) { + const info = kTextureFormatInfo[format]; + const alignedBytesPerSample = align(bytesPerSample, info.colorRender.alignment); + bytesPerSample = alignedBytesPerSample + info.colorRender.byteCost; + } + return bytesPerSample; +} + +/** + * Given an array of GPUColorTargetState return the number of bytes per sample + */ +export function computeBytesPerSample(targets) { + return computeBytesPerSampleFromFormats(targets.map(({ format }) => format)); +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/gpu_test.js b/tests/wpt/webgpu/tests/webgpu/webgpu/gpu_test.js index b9d5c28d762..003552c5459 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/gpu_test.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/gpu_test.js @@ -1,13 +1,15 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { Fixture, SubcaseBatchState } from '../common/framework/fixture.js'; -import { assert, range, unreachable } from '../common/util/util.js'; + **/ import { Fixture, SkipTestCase, SubcaseBatchState } from '../common/framework/fixture.js'; +import { globalTestConfig } from '../common/framework/test_config.js'; +import { assert, makeValueTestVariant, memcpy, range, unreachable } from '../common/util/util.js'; -import { kQueryTypeInfo } from './capability_info.js'; +import { getDefaultLimits, kQueryTypeInfo } from './capability_info.js'; import { kTextureFormatInfo, kEncodableTextureFormats, resolvePerAspectFormat, + isCompressedTextureFormat, } from './format_info.js'; import { makeBufferWithContents } from './util/buffer.js'; import { checkElementsEqual, checkElementsBetween } from './util/check_contents.js'; @@ -16,7 +18,12 @@ import { CommandBufferMaker } from './util/command_buffer_maker.js'; import { DevicePool } from './util/device_pool.js'; import { align, roundDown } from './util/math.js'; import { createTextureFromTexelView, createTextureFromTexelViews } from './util/texture.js'; -import { getTextureCopyLayout, getTextureSubCopyLayout } from './util/texture/layout.js'; +import { physicalMipSizeFromTexture, virtualMipSize } from './util/texture/base.js'; +import { + bytesInACompleteRow, + getTextureCopyLayout, + getTextureSubCopyLayout, +} from './util/texture/layout.js'; import { kTexelRepresentationInfo } from './util/texture/texel_data.js'; import { TexelView } from './util/texture/texel_view.js'; import { textureContentIsOKByT2B } from './util/texture/texture_ok.js'; @@ -75,6 +82,14 @@ export class GPUTestSubcaseBatchState extends SubcaseBatchState { return this.provider; } + get isCompatibility() { + return globalTestConfig.compatibility; + } + + getDefaultLimits() { + return getDefaultLimits(this.isCompatibility ? 'compatibility' : 'core'); + } + /** * Some tests or cases need particular feature flags or limits to be enabled. * Call this function with a descriptor or feature name (or `undefined`) to select a @@ -105,6 +120,7 @@ export class GPUTestSubcaseBatchState extends SubcaseBatchState { const features = new Set(); for (const format of formats) { if (format !== undefined) { + this.skipIfTextureFormatNotSupported(format); features.add(kTextureFormatInfo[format].feature); } } @@ -151,6 +167,51 @@ export class GPUTestSubcaseBatchState extends SubcaseBatchState { // Suppress uncaught promise rejection (we'll catch it later). this.mismatchedProvider.catch(() => {}); } + + /** Throws an exception marking the subcase as skipped. */ + skip(msg) { + throw new SkipTestCase(msg); + } + + /** Throws an exception making the subcase as skipped if condition is true */ + skipIf(cond, msg = '') { + if (cond) { + this.skip(typeof msg === 'function' ? msg() : msg); + } + } + + /** + * Skips test if any format is not supported. + */ + skipIfTextureFormatNotSupported(...formats) { + if (this.isCompatibility) { + for (const format of formats) { + if (format === 'bgra8unorm-srgb') { + this.skip(`texture format '${format} is not supported`); + } + } + } + } + + skipIfCopyTextureToTextureNotSupportedForFormat(...formats) { + if (this.isCompatibility) { + for (const format of formats) { + if (format && isCompressedTextureFormat(format)) { + this.skip(`copyTextureToTexture with ${format} is not supported`); + } + } + } + } + + skipIfTextureViewDimensionNotSupported(...dimensions) { + if (this.isCompatibility) { + for (const dimension of dimensions) { + if (dimension === 'cube-array') { + this.skip(`texture view dimension '${dimension}' is not supported`); + } + } + } + } } /** @@ -175,6 +236,26 @@ export class GPUTestBase extends Fixture { return this.device.queue; } + get isCompatibility() { + return globalTestConfig.compatibility; + } + + getDefaultLimits() { + return getDefaultLimits(this.isCompatibility ? 'compatibility' : 'core'); + } + + getDefaultLimit(limit) { + return this.getDefaultLimits()[limit].default; + } + + makeLimitVariant(limit, variant) { + return makeValueTestVariant(this.device.limits[limit], variant); + } + + canCallCopyTextureToBufferWithTextureFormat(format) { + return !this.isCompatibility || !isCompressedTextureFormat(format); + } + /** Snapshot a GPUBuffer's contents, returning a new GPUBuffer with the `MAP_READ` usage. */ createCopyForMapRead(src, srcOffset, size) { assert(srcOffset % 4 === 0); @@ -253,6 +334,29 @@ export class GPUTestBase extends Fixture { }; } + /** + * Skips test if any format is not supported. + */ + skipIfTextureFormatNotSupported(...formats) { + if (this.isCompatibility) { + for (const format of formats) { + if (format === 'bgra8unorm-srgb') { + this.skip(`texture format '${format} is not supported`); + } + } + } + } + + skipIfTextureViewDimensionNotSupported(...dimensions) { + if (this.isCompatibility) { + for (const dimension of dimensions) { + if (dimension === 'cube-array') { + this.skip(`texture view dimension '${dimension}' is not supported`); + } + } + } + } + /** * Expect a GPUBuffer's contents to pass the provided check. * @@ -887,6 +991,65 @@ export class GPUTest extends GPUTestBase { * related expectation helpers. */ +const s_deviceToResourcesMap = new WeakMap(); + +/** + * Gets a (cached) pipeline to render a texture to an rgba8unorm texture + */ +function getPipelineToRenderTextureToRGB8UnormTexture(device) { + if (!s_deviceToResourcesMap.has(device)) { + const module = device.createShaderModule({ + code: ` + struct VSOutput { + @builtin(position) position: vec4f, + @location(0) texcoord: vec2f, + }; + + @vertex fn vs( + @builtin(vertex_index) vertexIndex : u32 + ) -> VSOutput { + let pos = array( + vec2f(-1, -1), + vec2f(-1, 3), + vec2f( 3, -1), + ); + + var vsOutput: VSOutput; + + let xy = pos[vertexIndex]; + + vsOutput.position = vec4f(xy, 0.0, 1.0); + vsOutput.texcoord = xy * vec2f(0.5, -0.5) + vec2f(0.5); + + return vsOutput; + } + + @group(0) @binding(0) var ourSampler: sampler; + @group(0) @binding(1) var ourTexture: texture_2d; + + @fragment fn fs(fsInput: VSOutput) -> @location(0) vec4f { + return textureSample(ourTexture, ourSampler, fsInput.texcoord); + } + `, + }); + const pipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module, + entryPoint: 'vs', + }, + fragment: { + module, + entryPoint: 'fs', + targets: [{ format: 'rgba8unorm' }], + }, + }); + s_deviceToResourcesMap.set(device, { pipeline }); + } + const { pipeline } = s_deviceToResourcesMap.get(device); + return pipeline; +} + export function TextureTestMixin(Base) { class TextureExpectations extends Base { createTextureFromTexelView(texelView, desc) { @@ -999,6 +1162,228 @@ export function TextureTestMixin(Base) { ) ); } + + expectTexturesToMatchByRendering(actualTexture, expectedTexture, mipLevel, origin, size) { + // Render every layer of both textures at mipLevel to an rgba8unorm texture + // that matches the size of the mipLevel. After each render, copy the + // result to a buffer and expect the results from both textures to match. + const pipeline = getPipelineToRenderTextureToRGB8UnormTexture(this.device); + const readbackPromisesPerTexturePerLayer = [actualTexture, expectedTexture].map( + (texture, ndx) => { + const attachmentSize = virtualMipSize('2d', [texture.width, texture.height, 1], mipLevel); + const attachment = this.device.createTexture({ + label: `readback${ndx}`, + size: attachmentSize, + format: 'rgba8unorm', + usage: GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, + }); + this.trackForCleanup(attachment); + + const sampler = this.device.createSampler(); + + const numLayers = texture.depthOrArrayLayers; + const readbackPromisesPerLayer = []; + for (let layer = 0; layer < numLayers; ++layer) { + const bindGroup = this.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: sampler }, + { + binding: 1, + resource: texture.createView({ + baseMipLevel: mipLevel, + mipLevelCount: 1, + baseArrayLayer: layer, + arrayLayerCount: 1, + dimension: '2d', + }), + }, + ], + }); + + const encoder = this.device.createCommandEncoder(); + const pass = encoder.beginRenderPass({ + colorAttachments: [ + { + view: attachment.createView(), + clearValue: [0.5, 0.5, 0.5, 0.5], + loadOp: 'clear', + storeOp: 'store', + }, + ], + }); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.draw(3); + pass.end(); + this.queue.submit([encoder.finish()]); + + const buffer = this.copyWholeTextureToNewBufferSimple(attachment, 0); + + readbackPromisesPerLayer.push( + this.readGPUBufferRangeTyped(buffer, { + type: Uint8Array, + typedLength: buffer.size, + }) + ); + } + return readbackPromisesPerLayer; + } + ); + + this.eventualAsyncExpectation(async niceStack => { + const readbacksPerTexturePerLayer = []; + + // Wait for all buffers to be ready + for (const readbackPromises of readbackPromisesPerTexturePerLayer) { + readbacksPerTexturePerLayer.push(await Promise.all(readbackPromises)); + } + + function arrayNotAllTheSameValue(arr, msg) { + const first = arr[0]; + return arr.length <= 1 || arr.findIndex(v => v !== first) >= 0 + ? undefined + : Error(`array is entirely ${first} so likely nothing was tested: ${msg || ''}`); + } + + // Compare each layer of each texture as read from buffer. + const [actualReadbacksPerLayer, expectedReadbacksPerLayer] = readbacksPerTexturePerLayer; + for (let layer = 0; layer < actualReadbacksPerLayer.length; ++layer) { + const actualReadback = actualReadbacksPerLayer[layer]; + const expectedReadback = expectedReadbacksPerLayer[layer]; + const sameOk = + size.width === 0 || + size.height === 0 || + layer < origin.z || + layer >= origin.z + size.depthOrArrayLayers; + this.expectOK( + sameOk ? undefined : arrayNotAllTheSameValue(actualReadback.data, 'actualTexture') + ); + + this.expectOK( + sameOk ? undefined : arrayNotAllTheSameValue(expectedReadback.data, 'expectedTexture') + ); + + this.expectOK(checkElementsEqual(actualReadback.data, expectedReadback.data), { + mode: 'fail', + niceStack, + }); + actualReadback.cleanup(); + expectedReadback.cleanup(); + } + }); + } + + copyWholeTextureToNewBufferSimple(texture, mipLevel) { + const { blockWidth, blockHeight, bytesPerBlock } = kTextureFormatInfo[texture.format]; + const mipSize = physicalMipSizeFromTexture(texture, mipLevel); + assert(bytesPerBlock !== undefined); + + const blocksPerRow = mipSize[0] / blockWidth; + const blocksPerColumn = mipSize[1] / blockHeight; + + assert(blocksPerRow % 1 === 0); + assert(blocksPerColumn % 1 === 0); + + const bytesPerRow = align(blocksPerRow * bytesPerBlock, 256); + const byteLength = bytesPerRow * blocksPerColumn * mipSize[2]; + + return this.copyWholeTextureToNewBuffer( + { texture, mipLevel }, + { + bytesPerBlock, + bytesPerRow, + rowsPerImage: blocksPerColumn, + byteLength, + } + ); + } + + copyWholeTextureToNewBuffer({ texture, mipLevel }, resultDataLayout) { + const { byteLength, bytesPerRow, rowsPerImage } = resultDataLayout; + const buffer = this.device.createBuffer({ + size: align(byteLength, 4), // this is necessary because we need to copy and map data from this buffer + usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST, + }); + this.trackForCleanup(buffer); + + const mipSize = physicalMipSizeFromTexture(texture, mipLevel || 0); + const encoder = this.device.createCommandEncoder(); + encoder.copyTextureToBuffer( + { texture, mipLevel }, + { buffer, bytesPerRow, rowsPerImage }, + mipSize + ); + + this.device.queue.submit([encoder.finish()]); + + return buffer; + } + + updateLinearTextureDataSubBox(format, copySize, copyParams) { + const { src, dest } = copyParams; + const rowLength = bytesInACompleteRow(copySize.width, format); + for (const texel of this.iterateBlockRows(copySize, format)) { + const srcOffsetElements = this.getTexelOffsetInBytes( + src.dataLayout, + format, + texel, + src.origin + ); + + const dstOffsetElements = this.getTexelOffsetInBytes( + dest.dataLayout, + format, + texel, + dest.origin + ); + + memcpy( + { src: src.data, start: srcOffsetElements, length: rowLength }, + { dst: dest.data, start: dstOffsetElements } + ); + } + } + + /** Offset for a particular texel in the linear texture data */ + getTexelOffsetInBytes(textureDataLayout, format, texel, origin = { x: 0, y: 0, z: 0 }) { + const { offset, bytesPerRow, rowsPerImage } = textureDataLayout; + const info = kTextureFormatInfo[format]; + + assert(texel.x % info.blockWidth === 0); + assert(texel.y % info.blockHeight === 0); + assert(origin.x % info.blockWidth === 0); + assert(origin.y % info.blockHeight === 0); + + const bytesPerImage = rowsPerImage * bytesPerRow; + + return ( + offset + + (texel.z + origin.z) * bytesPerImage + + ((texel.y + origin.y) / info.blockHeight) * bytesPerRow + + ((texel.x + origin.x) / info.blockWidth) * info.color.bytes + ); + } + + *iterateBlockRows(size, format) { + if (size.width === 0 || size.height === 0 || size.depthOrArrayLayers === 0) { + // do not iterate anything for an empty region + return; + } + const info = kTextureFormatInfo[format]; + assert(size.height % info.blockHeight === 0); + // Note: it's important that the order is in increasing memory address order. + for (let z = 0; z < size.depthOrArrayLayers; ++z) { + for (let y = 0; y < size.height; y += info.blockHeight) { + yield { + x: 0, + y, + z, + }; + } + } + } } + return TextureExpectations; } diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/listing.js b/tests/wpt/webgpu/tests/webgpu/webgpu/listing.js index 4cb0337621f..e0dbc7a51f8 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/listing.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/listing.js @@ -1586,6 +1586,71 @@ export const listing = [ "rg11b10ufloat_renderable" ] }, + { + "file": [ + "compat", + "api", + "validation", + "encoding", + "cmds", + "copyTextureToBuffer" + ] + }, + { + "file": [ + "compat", + "api", + "validation", + "encoding", + "programmable", + "pipeline_bind_group_compat" + ] + }, + { + "file": [ + "compat", + "api", + "validation", + "render_pipeline", + "fragment_state" + ] + }, + { + "file": [ + "compat", + "api", + "validation", + "render_pipeline", + "shader_module" + ] + }, + { + "file": [ + "compat", + "api", + "validation", + "render_pipeline", + "vertex_state" + ] + }, + { + "file": [ + "compat", + "api", + "validation", + "texture", + "createTexture" + ] + }, + { + "file": [ + "compat", + "api", + "validation", + "texture", + "cubeArray" + ] + }, { "file": [ "examples" @@ -1617,6 +1682,60 @@ export const listing = [ ], "readme": "Tests that check the result of valid shader execution." }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "af_addition" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "af_comparison" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "af_matrix_addition" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "af_matrix_subtraction" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "af_multiplication" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "af_subtraction" + ] + }, { "file": [ "shader", @@ -1644,6 +1763,15 @@ export const listing = [ "bool_logical" ] }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_addition" + ] + }, { "file": [ "shader", @@ -1653,6 +1781,87 @@ export const listing = [ "f16_comparison" ] }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_division" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_matrix_addition" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_matrix_matrix_multiplication" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_matrix_scalar_multiplication" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_matrix_subtraction" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_matrix_vector_multiplication" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_multiplication" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_remainder" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "binary", + "f16_subtraction" + ] + }, { "file": [ "shader", @@ -2905,7 +3114,16 @@ export const listing = [ "execution", "expression", "unary", - "abstract_float_assignment" + "af_arithmetic" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "unary", + "af_assignment" ] }, { @@ -2926,6 +3144,24 @@ export const listing = [ "bool_logical" ] }, + { + "file": [ + "shader", + "execution", + "expression", + "unary", + "f16_arithmetic" + ] + }, + { + "file": [ + "shader", + "execution", + "expression", + "unary", + "f16_conversion" + ] + }, { "file": [ "shader", @@ -3189,6 +3425,47 @@ export const listing = [ "const_assert" ] }, + { + "file": [ + "shader", + "validation", + "decl", + "const" + ] + }, + { + "file": [ + "shader", + "validation", + "decl", + "override" + ] + }, + { + "file": [ + "shader", + "validation", + "decl", + "ptr_spelling" + ] + }, + { + "file": [ + "shader", + "validation", + "decl", + "var_access_mode" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "access", + "vector" + ] + }, { "file": [ "shader", @@ -3198,6 +3475,86 @@ export const listing = [ "bitwise_shift" ] }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "abs" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "acos" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "acosh" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "asin" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "asinh" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "atan" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "atan2" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "atanh" + ] + }, { "file": [ "shader", @@ -3208,6 +3565,232 @@ export const listing = [ "atomics" ] }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "bitcast" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "ceil" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "clamp" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "cos" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "cosh" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "degrees" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "exp" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "exp2" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "inverseSqrt" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "length" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "log" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "log2" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "modf" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "radians" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "round" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "saturate" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "sign" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "sin" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "sinh" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "sqrt" + ] + }, + { + "file": [ + "shader", + "validation", + "expression", + "call", + "builtin", + "tan" + ] + }, + { + "file": [ + "shader", + "validation", + "functions", + "alias_analysis" + ] + }, + { + "file": [ + "shader", + "validation", + "functions", + "restrictions" + ] + }, { "file": [ "shader", @@ -3280,6 +3863,14 @@ export const listing = [ "const_assert" ] }, + { + "file": [ + "shader", + "validation", + "parse", + "diagnostic" + ] + }, { "file": [ "shader", @@ -3312,6 +3903,14 @@ export const listing = [ "literal" ] }, + { + "file": [ + "shader", + "validation", + "parse", + "must_use" + ] + }, { "file": [ "shader", @@ -3356,8 +3955,8 @@ export const listing = [ "file": [ "shader", "validation", - "resource_interface", - "bindings" + "shader_io", + "binding" ] }, { @@ -3376,6 +3975,30 @@ export const listing = [ "entry_point" ] }, + { + "file": [ + "shader", + "validation", + "shader_io", + "group" + ] + }, + { + "file": [ + "shader", + "validation", + "shader_io", + "group_and_binding" + ] + }, + { + "file": [ + "shader", + "validation", + "shader_io", + "id" + ] + }, { "file": [ "shader", @@ -3400,6 +4023,46 @@ export const listing = [ "locations" ] }, + { + "file": [ + "shader", + "validation", + "shader_io", + "size" + ] + }, + { + "file": [ + "shader", + "validation", + "shader_io", + "workgroup_size" + ] + }, + { + "file": [ + "shader", + "validation", + "types", + "alias" + ] + }, + { + "file": [ + "shader", + "validation", + "types", + "struct" + ] + }, + { + "file": [ + "shader", + "validation", + "types", + "vector" + ] + }, { "file": [ "shader", @@ -3477,6 +4140,13 @@ export const listing = [ "ImageBitmap" ] }, + { + "file": [ + "web_platform", + "copyToTexture", + "ImageData" + ] + }, { "file": [ "web_platform", @@ -3491,6 +4161,13 @@ export const listing = [ "canvas" ] }, + { + "file": [ + "web_platform", + "copyToTexture", + "image" + ] + }, { "file": [ "web_platform", diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_addition.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_addition.spec.js new file mode 100644 index 00000000000..7fa06b47e4f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_addition.spec.js @@ -0,0 +1,153 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix AbstractFloat addition expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeAbstractFloat, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF64Range, sparseVectorF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { onlyConstInputSource, run } from '../expression.js'; + +import { abstractBinary } from './binary.js'; + +const additionVectorScalarInterval = (v, s) => { + return FP.abstract.toVector(v.map(e => FP.abstract.additionInterval(e, s))); +}; + +const additionScalarVectorInterval = (s, v) => { + return FP.abstract.toVector(v.map(e => FP.abstract.additionInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = { + ['scalar']: () => { + return FP.abstract.generateScalarPairToIntervalCases( + sparseF64Range(), + sparseF64Range(), + 'finite', + FP.abstract.additionInterval + ); + }, +}; + +const vector_scalar_cases = [2, 3, 4] + .map(dim => ({ + [`vec${dim}_scalar`]: () => { + return FP.abstract.generateVectorScalarToVectorCases( + sparseVectorF64Range(dim), + sparseF64Range(), + 'finite', + additionVectorScalarInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .map(dim => ({ + [`scalar_vec${dim}`]: () => { + return FP.abstract.generateScalarVectorToVectorCases( + sparseF64Range(), + sparseVectorF64Range(dim), + 'finite', + additionScalarVectorInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/af_addition', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are scalars +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('scalar'); + await run( + t, + abstractBinary('+'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get('scalar'); // Using vectorize to generate vector cases based on scalar cases + await run( + t, + abstractBinary('+'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('dim', [2, 3, 4])) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get(`vec${dim}_scalar`); + await run( + t, + abstractBinary('+'), + [TypeVec(dim, TypeAbstractFloat), TypeAbstractFloat], + TypeVec(dim, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('dim', [2, 3, 4])) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get(`scalar_vec${dim}`); + await run( + t, + abstractBinary('+'), + [TypeAbstractFloat, TypeVec(dim, TypeAbstractFloat)], + TypeVec(dim, TypeAbstractFloat), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_comparison.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_comparison.spec.js new file mode 100644 index 00000000000..1d3e2a3314b --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_comparison.spec.js @@ -0,0 +1,205 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for the AbstractFloat comparison operations +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { anyOf } from '../../../../util/compare.js'; +import { abstractFloat, bool, TypeAbstractFloat, TypeBool } from '../../../../util/conversion.js'; +import { flushSubnormalNumberF64, vectorF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +/** + * @returns a test case for the provided left hand & right hand values and truth function. + * Handles quantization and subnormals. + */ +function makeCase(lhs, rhs, truthFunc) { + // Subnormal float values may be flushed at any time. + // https://www.w3.org/TR/WGSL/#floating-point-evaluation + const af_lhs = abstractFloat(lhs); + const af_rhs = abstractFloat(rhs); + const lhs_options = new Set([af_lhs, abstractFloat(flushSubnormalNumberF64(lhs))]); + const rhs_options = new Set([af_rhs, abstractFloat(flushSubnormalNumberF64(rhs))]); + const expected = []; + lhs_options.forEach(l => { + rhs_options.forEach(r => { + const result = bool(truthFunc(l, r)); + if (!expected.includes(result)) { + expected.push(result); + } + }); + }); + + return { input: [af_lhs, af_rhs], expected: anyOf(...expected) }; +} + +export const d = makeCaseCache('binary/af_logical', { + equals: () => { + const truthFunc = (lhs, rhs) => { + return lhs.value === rhs.value; + }; + + return vectorF64Range(2).map(v => { + return makeCase(v[0], v[1], truthFunc); + }); + }, + not_equals: () => { + const truthFunc = (lhs, rhs) => { + return lhs.value !== rhs.value; + }; + + return vectorF64Range(2).map(v => { + return makeCase(v[0], v[1], truthFunc); + }); + }, + less_than: () => { + const truthFunc = (lhs, rhs) => { + return lhs.value < rhs.value; + }; + + return vectorF64Range(2).map(v => { + return makeCase(v[0], v[1], truthFunc); + }); + }, + less_equals: () => { + const truthFunc = (lhs, rhs) => { + return lhs.value <= rhs.value; + }; + + return vectorF64Range(2).map(v => { + return makeCase(v[0], v[1], truthFunc); + }); + }, + greater_than: () => { + const truthFunc = (lhs, rhs) => { + return lhs.value > rhs.value; + }; + + return vectorF64Range(2).map(v => { + return makeCase(v[0], v[1], truthFunc); + }); + }, + greater_equals: () => { + const truthFunc = (lhs, rhs) => { + return lhs.value >= rhs.value; + }; + + return vectorF64Range(2).map(v => { + return makeCase(v[0], v[1], truthFunc); + }); + }, +}); + +g.test('equals') + .specURL('https://www.w3.org/TR/WGSL/#comparison-expr') + .desc( + ` +Expression: x == y +Accuracy: Correct result +` + ) + .params(u => + u + .combine('inputSource', [allInputSources[0]] /* const */) + .combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('equals'); + await run(t, binary('=='), [TypeAbstractFloat, TypeAbstractFloat], TypeBool, t.params, cases); + }); + +g.test('not_equals') + .specURL('https://www.w3.org/TR/WGSL/#comparison-expr') + .desc( + ` +Expression: x != y +Accuracy: Correct result +` + ) + .params(u => + u + .combine('inputSource', [allInputSources[0]] /* const */) + .combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('not_equals'); + await run(t, binary('!='), [TypeAbstractFloat, TypeAbstractFloat], TypeBool, t.params, cases); + }); + +g.test('less_than') + .specURL('https://www.w3.org/TR/WGSL/#comparison-expr') + .desc( + ` +Expression: x < y +Accuracy: Correct result +` + ) + .params(u => + u + .combine('inputSource', [allInputSources[0]] /* const */) + .combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('less_than'); + await run(t, binary('<'), [TypeAbstractFloat, TypeAbstractFloat], TypeBool, t.params, cases); + }); + +g.test('less_equals') + .specURL('https://www.w3.org/TR/WGSL/#comparison-expr') + .desc( + ` +Expression: x <= y +Accuracy: Correct result +` + ) + .params(u => + u + .combine('inputSource', [allInputSources[0]] /* const */) + .combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('less_equals'); + await run(t, binary('<='), [TypeAbstractFloat, TypeAbstractFloat], TypeBool, t.params, cases); + }); + +g.test('greater_than') + .specURL('https://www.w3.org/TR/WGSL/#comparison-expr') + .desc( + ` +Expression: x > y +Accuracy: Correct result +` + ) + .params(u => + u + .combine('inputSource', [allInputSources[0]] /* const */) + .combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('greater_than'); + await run(t, binary('>'), [TypeAbstractFloat, TypeAbstractFloat], TypeBool, t.params, cases); + }); + +g.test('greater_equals') + .specURL('https://www.w3.org/TR/WGSL/#comparison-expr') + .desc( + ` +Expression: x >= y +Accuracy: Correct result +` + ) + .params(u => + u + .combine('inputSource', [allInputSources[0]] /* const */) + .combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('greater_equals'); + await run(t, binary('>='), [TypeAbstractFloat, TypeAbstractFloat], TypeBool, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_addition.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_addition.spec.js new file mode 100644 index 00000000000..420ec0361f2 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_addition.spec.js @@ -0,0 +1,62 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix AbstractFloat addition expressions +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeAbstractFloat, TypeMat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseMatrixF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { onlyConstInputSource, run } from '../expression.js'; + +import { abstractBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matCxR +const mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].map(rows => ({ + [`mat${cols}x${rows}`]: () => { + return FP.abstract.generateMatrixPairToMatrixCases( + sparseMatrixF64Range(cols, rows), + sparseMatrixF64Range(cols, rows), + 'finite', + FP.abstract.additionMatrixMatrixInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/af_matrix_addition', mat_cases); + +g.test('matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are matrices +Accuracy: Correctly rounded +` + ) + .params(u => + u + .combine('inputSource', onlyConstInputSource) + .combine('cols', [2, 3, 4]) + .combine('rows', [2, 3, 4]) + ) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get(`mat${cols}x${rows}`); + await run( + t, + abstractBinary('+'), + [TypeMat(cols, rows, TypeAbstractFloat), TypeMat(cols, rows, TypeAbstractFloat)], + TypeMat(cols, rows, TypeAbstractFloat), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_subtraction.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_subtraction.spec.js new file mode 100644 index 00000000000..9cd5a1fe533 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_matrix_subtraction.spec.js @@ -0,0 +1,62 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix AbstractFloat subtraction expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeAbstractFloat, TypeMat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseMatrixF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { onlyConstInputSource, run } from '../expression.js'; + +import { abstractBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matCxR +const mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].map(rows => ({ + [`mat${cols}x${rows}`]: () => { + return FP.abstract.generateMatrixPairToMatrixCases( + sparseMatrixF64Range(cols, rows), + sparseMatrixF64Range(cols, rows), + 'finite', + FP.abstract.subtractionMatrixMatrixInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/af_matrix_subtraction', mat_cases); + +g.test('matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are matrices +Accuracy: Correctly rounded +` + ) + .params(u => + u + .combine('inputSource', onlyConstInputSource) + .combine('cols', [2, 3, 4]) + .combine('rows', [2, 3, 4]) + ) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get(`mat${cols}x${rows}`); + await run( + t, + abstractBinary('-'), + [TypeMat(cols, rows, TypeAbstractFloat), TypeMat(cols, rows, TypeAbstractFloat)], + TypeMat(cols, rows, TypeAbstractFloat), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_multiplication.spec.js new file mode 100644 index 00000000000..314f1aa96d7 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_multiplication.spec.js @@ -0,0 +1,153 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix AbstractFloat multiplication expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeAbstractFloat, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF64Range, sparseVectorF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { onlyConstInputSource, run } from '../expression.js'; + +import { abstractBinary } from './binary.js'; + +const multiplicationVectorScalarInterval = (v, s) => { + return FP.abstract.toVector(v.map(e => FP.abstract.multiplicationInterval(e, s))); +}; + +const multiplicationScalarVectorInterval = (s, v) => { + return FP.abstract.toVector(v.map(e => FP.abstract.multiplicationInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = { + ['scalar']: () => { + return FP.abstract.generateScalarPairToIntervalCases( + sparseF64Range(), + sparseF64Range(), + 'finite', + FP.abstract.multiplicationInterval + ); + }, +}; + +const vector_scalar_cases = [2, 3, 4] + .map(dim => ({ + [`vec${dim}_scalar`]: () => { + return FP.abstract.generateVectorScalarToVectorCases( + sparseVectorF64Range(dim), + sparseF64Range(), + 'finite', + multiplicationVectorScalarInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .map(dim => ({ + [`scalar_vec${dim}`]: () => { + return FP.abstract.generateScalarVectorToVectorCases( + sparseF64Range(), + sparseVectorF64Range(dim), + 'finite', + multiplicationScalarVectorInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/af_multiplication', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x and y are scalars +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('scalar'); + await run( + t, + abstractBinary('*'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get('scalar'); // Using vectorize to generate vector cases based on scalar cases + await run( + t, + abstractBinary('*'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('dim', [2, 3, 4])) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get(`vec${dim}_scalar`); + await run( + t, + abstractBinary('*'), + [TypeVec(dim, TypeAbstractFloat), TypeAbstractFloat], + TypeVec(dim, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('dim', [2, 3, 4])) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get(`scalar_vec${dim}`); + await run( + t, + abstractBinary('*'), + [TypeAbstractFloat, TypeVec(dim, TypeAbstractFloat)], + TypeVec(dim, TypeAbstractFloat), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_subtraction.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_subtraction.spec.js new file mode 100644 index 00000000000..d202c3c4dc9 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/af_subtraction.spec.js @@ -0,0 +1,153 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix AbstractFloat subtraction expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeAbstractFloat, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF64Range, sparseVectorF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { onlyConstInputSource, run } from '../expression.js'; + +import { abstractBinary } from './binary.js'; + +const subtractionVectorScalarInterval = (v, s) => { + return FP.abstract.toVector(v.map(e => FP.abstract.subtractionInterval(e, s))); +}; + +const subtractionScalarVectorInterval = (s, v) => { + return FP.abstract.toVector(v.map(e => FP.abstract.subtractionInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = { + ['scalar']: () => { + return FP.abstract.generateScalarPairToIntervalCases( + sparseF64Range(), + sparseF64Range(), + 'finite', + FP.abstract.subtractionInterval + ); + }, +}; + +const vector_scalar_cases = [2, 3, 4] + .map(dim => ({ + [`vec${dim}_scalar`]: () => { + return FP.abstract.generateVectorScalarToVectorCases( + sparseVectorF64Range(dim), + sparseF64Range(), + 'finite', + subtractionVectorScalarInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .map(dim => ({ + [`scalar_vec${dim}`]: () => { + return FP.abstract.generateScalarVectorToVectorCases( + sparseF64Range(), + sparseVectorF64Range(dim), + 'finite', + subtractionScalarVectorInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/af_subtraction', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are scalars +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('scalar'); + await run( + t, + abstractBinary('-'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get('scalar'); // Using vectorize to generate vector cases based on scalar cases + await run( + t, + abstractBinary('-'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('dim', [2, 3, 4])) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get(`vec${dim}_scalar`); + await run( + t, + abstractBinary('-'), + [TypeVec(dim, TypeAbstractFloat), TypeAbstractFloat], + TypeVec(dim, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource).combine('dim', [2, 3, 4])) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get(`scalar_vec${dim}`); + await run( + t, + abstractBinary('-'), + [TypeAbstractFloat, TypeVec(dim, TypeAbstractFloat)], + TypeVec(dim, TypeAbstractFloat), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js index 0ed7318f8ba..a9a6bd2733c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js @@ -3,7 +3,10 @@ **/ import { basicExpressionBuilder, compoundAssignmentBuilder, -} from '../expression.js'; /* @returns a ShaderBuilder that evaluates a binary operation */ + abstractFloatShaderBuilder, +} from '../expression.js'; + +/* @returns a ShaderBuilder that evaluates a binary operation */ export function binary(op) { return basicExpressionBuilder(values => `(${values.map(v => `(${v})`).join(op)})`); } @@ -12,3 +15,8 @@ export function binary(op) { export function compoundBinary(op) { return compoundAssignmentBuilder(op); } + +/* @returns a ShaderBuilder that evaluates a binary operation that returns AbstractFloats */ +export function abstractBinary(op) { + return abstractFloatShaderBuilder(values => `(${values.map(v => `(${v})`).join(op)})`); +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_addition.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_addition.spec.js new file mode 100644 index 00000000000..73d9dba092e --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_addition.spec.js @@ -0,0 +1,216 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix f16 addition expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF16Range, sparseVectorF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +const additionVectorScalarInterval = (v, s) => { + return FP.f16.toVector(v.map(e => FP.f16.additionInterval(e, s))); +}; + +const additionScalarVectorInterval = (s, v) => { + return FP.f16.toVector(v.map(e => FP.f16.additionInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarPairToIntervalCases( + sparseF16Range(), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f16.additionInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorScalarToVectorCases( + sparseVectorF16Range(dim), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + additionVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarVectorToVectorCases( + sparseF16Range(), + sparseVectorF16Range(dim), + nonConst ? 'unfiltered' : 'finite', + additionScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_addition', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are scalars +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, binary('+'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('+'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x += y +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, compoundBinary('+='), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + binary('+'), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x += y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + compoundBinary('+='), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `scalar_vec${dim}_const` : `scalar_vec${dim}_non_const` + ); + + await run( + t, + binary('+'), + [TypeF16, TypeVec(dim, TypeF16)], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_division.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_division.spec.js new file mode 100644 index 00000000000..e10519dfe7f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_division.spec.js @@ -0,0 +1,216 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix f16 division expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF16Range, sparseVectorF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +const divisionVectorScalarInterval = (v, s) => { + return FP.f16.toVector(v.map(e => FP.f16.divisionInterval(e, s))); +}; + +const divisionScalarVectorInterval = (s, v) => { + return FP.f16.toVector(v.map(e => FP.f16.divisionInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarPairToIntervalCases( + sparseF16Range(), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f16.divisionInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorScalarToVectorCases( + sparseVectorF16Range(dim), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + divisionVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarVectorToVectorCases( + sparseF16Range(), + sparseVectorF16Range(dim), + nonConst ? 'unfiltered' : 'finite', + divisionScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_division', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x / y, where x and y are scalars +Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126] +` + ) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, binary('/'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x / y, where x and y are vectors +Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126] +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('/'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x /= y +Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126] +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, compoundBinary('/='), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x / y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + binary('/'), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x /= y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + compoundBinary('/='), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x / y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `scalar_vec${dim}_const` : `scalar_vec${dim}_non_const` + ); + + await run( + t, + binary('/'), + [TypeF16, TypeVec(dim, TypeF16)], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_addition.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_addition.spec.js new file mode 100644 index 00000000000..1c21bfbdb85 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_addition.spec.js @@ -0,0 +1,98 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix f16 addition expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeMat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseMatrixF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matCxR_[non_]const +const mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixPairToMatrixCases( + sparseMatrixF16Range(cols, rows), + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.additionMatrixMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_matrix_addition', mat_cases); + +g.test('matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are matrices +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' ? `mat${cols}x${rows}_const` : `mat${cols}x${rows}_non_const` + ); + + await run( + t, + binary('+'), + [TypeMat(cols, rows, TypeF16), TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); + +g.test('matrix_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x =+ y, where x and y are matrices +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' ? `mat${cols}x${rows}_const` : `mat${cols}x${rows}_non_const` + ); + + await run( + t, + compoundBinary('+='), + [TypeMat(cols, rows, TypeF16), TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_matrix_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_matrix_multiplication.spec.js new file mode 100644 index 00000000000..2e9c94d0aac --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_matrix_multiplication.spec.js @@ -0,0 +1,117 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix-matrix f16 multiplication expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeMat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseMatrixF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matKxR_matCxK_[non_]const +const mat_mat_cases = [2, 3, 4] + .flatMap(k => + [2, 3, 4].flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${k}x${rows}_mat${cols}x${k}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixPairToMatrixCases( + sparseMatrixF16Range(k, rows), + sparseMatrixF16Range(cols, k), + nonConst ? 'unfiltered' : 'finite', + FP.f16.multiplicationMatrixMatrixInterval + ); + }, + })) + ) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_matrix_matrix_multiplication', mat_mat_cases); + +g.test('matrix_matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a matrix and y is a matrix +Accuracy: Correctly rounded +` + ) + .params(u => + u + .combine('inputSource', allInputSources) + .combine('common_dim', [2, 3, 4]) + .combine('x_rows', [2, 3, 4]) + .combine('y_cols', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const x_cols = t.params.common_dim; + const x_rows = t.params.x_rows; + const y_cols = t.params.y_cols; + const y_rows = t.params.common_dim; + + const cases = await d.get( + t.params.inputSource === 'const' + ? `mat${x_cols}x${x_rows}_mat${y_cols}x${y_rows}_const` + : `mat${x_cols}x${x_rows}_mat${y_cols}x${y_rows}_non_const` + ); + + await run( + t, + binary('*'), + [TypeMat(x_cols, x_rows, TypeF16), TypeMat(y_cols, y_rows, TypeF16)], + TypeMat(y_cols, x_rows, TypeF16), + t.params, + cases + ); + }); + +g.test('matrix_matrix_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x *= y, where x is a matrix and y is a matrix +Accuracy: Correctly rounded +` + ) + .params(u => + u + .combine('inputSource', allInputSources) + .combine('common_dim', [2, 3, 4]) + .combine('x_rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const x_cols = t.params.common_dim; + const x_rows = t.params.x_rows; + const y_cols = x_cols; + const y_rows = t.params.common_dim; + + const cases = await d.get( + t.params.inputSource === 'const' + ? `mat${x_cols}x${x_rows}_mat${y_cols}x${y_rows}_const` + : `mat${x_cols}x${x_rows}_mat${y_cols}x${y_rows}_non_const` + ); + + await run( + t, + compoundBinary('*='), + [TypeMat(x_cols, x_rows, TypeF16), TypeMat(y_cols, y_rows, TypeF16)], + TypeMat(y_cols, x_rows, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_scalar_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_scalar_multiplication.spec.js new file mode 100644 index 00000000000..8c111ab4ed3 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_scalar_multiplication.spec.js @@ -0,0 +1,156 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix-scalar and scalar-matrix f16 multiplication expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeMat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF16Range, sparseMatrixF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matCxR_scalar_[non_]const +const mat_scalar_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixScalarToMatrixCases( + sparseMatrixF16Range(cols, rows), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f16.multiplicationMatrixScalarInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: scalar_matCxR_[non_]const +const scalar_mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`scalar_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarMatrixToMatrixCases( + sparseF16Range(), + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.multiplicationScalarMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_matrix_scalar_multiplication', { + ...mat_scalar_cases, + ...scalar_mat_cases, +}); + +g.test('matrix_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a matrix and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `mat${cols}x${rows}_scalar_const` + : `mat${cols}x${rows}_scalar_non_const` + ); + + await run( + t, + binary('*'), + [TypeMat(cols, rows, TypeF16), TypeF16], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); + +g.test('matrix_scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x *= y, where x is a matrix and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `mat${cols}x${rows}_scalar_const` + : `mat${cols}x${rows}_scalar_non_const` + ); + + await run( + t, + compoundBinary('*='), + [TypeMat(cols, rows, TypeF16), TypeF16], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); + +g.test('scalar_matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a scalar and y is a matrix +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `scalar_mat${cols}x${rows}_const` + : `scalar_mat${cols}x${rows}_non_const` + ); + + await run( + t, + binary('*'), + [TypeF16, TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_subtraction.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_subtraction.spec.js new file mode 100644 index 00000000000..236da564d78 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_subtraction.spec.js @@ -0,0 +1,98 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix f16 subtraction expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeMat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseMatrixF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matCxR_[non_]const +const mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixPairToMatrixCases( + sparseMatrixF16Range(cols, rows), + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.subtractionMatrixMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_matrix_subtraction', mat_cases); + +g.test('matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are matrices +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' ? `mat${cols}x${rows}_const` : `mat${cols}x${rows}_non_const` + ); + + await run( + t, + binary('-'), + [TypeMat(cols, rows, TypeF16), TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); + +g.test('matrix_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x -= y, where x and y are matrices +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' ? `mat${cols}x${rows}_const` : `mat${cols}x${rows}_non_const` + ); + + await run( + t, + compoundBinary('-='), + [TypeMat(cols, rows, TypeF16), TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_vector_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_vector_multiplication.spec.js new file mode 100644 index 00000000000..dcfe2118fc8 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_matrix_vector_multiplication.spec.js @@ -0,0 +1,154 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for matrix-vector and vector-matrix f16 multiplication expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeMat, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseMatrixF16Range, sparseVectorF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +export const g = makeTestGroup(GPUTest); + +// Cases: matCxR_vecC_[non_]const +const mat_vec_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_vec${cols}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixVectorToVectorCases( + sparseMatrixF16Range(cols, rows), + sparseVectorF16Range(cols), + nonConst ? 'unfiltered' : 'finite', + FP.f16.multiplicationMatrixVectorInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: vecR_matCxR_[non_]const +const vec_mat_cases = [2, 3, 4] + .flatMap(rows => + [2, 3, 4].flatMap(cols => + [true, false].map(nonConst => ({ + [`vec${rows}_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorMatrixToVectorCases( + sparseVectorF16Range(rows), + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.multiplicationVectorMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_matrix_vector_multiplication', { + ...mat_vec_cases, + ...vec_mat_cases, +}); + +g.test('matrix_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a matrix and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `mat${cols}x${rows}_vec${cols}_const` + : `mat${cols}x${rows}_vec${cols}_non_const` + ); + + await run( + t, + binary('*'), + [TypeMat(cols, rows, TypeF16), TypeVec(cols, TypeF16)], + TypeVec(rows, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_matrix') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a vector and y is is a matrix +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `vec${rows}_mat${cols}x${rows}_const` + : `vec${rows}_mat${cols}x${rows}_non_const` + ); + + await run( + t, + binary('*'), + [TypeVec(rows, TypeF16), TypeMat(cols, rows, TypeF16)], + TypeVec(cols, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_matrix_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x *= y, where x is a vector and y is is a matrix +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.dim; + const rows = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' + ? `vec${rows}_mat${cols}x${rows}_const` + : `vec${rows}_mat${cols}x${rows}_non_const` + ); + + await run( + t, + compoundBinary('*='), + [TypeVec(rows, TypeF16), TypeMat(cols, rows, TypeF16)], + TypeVec(cols, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_multiplication.spec.js new file mode 100644 index 00000000000..a6ce77c433b --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_multiplication.spec.js @@ -0,0 +1,216 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix f16 multiplication expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF16Range, sparseVectorF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +const multiplicationVectorScalarInterval = (v, s) => { + return FP.f16.toVector(v.map(e => FP.f16.multiplicationInterval(e, s))); +}; + +const multiplicationScalarVectorInterval = (s, v) => { + return FP.f16.toVector(v.map(e => FP.f16.multiplicationInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarPairToIntervalCases( + sparseF16Range(), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f16.multiplicationInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorScalarToVectorCases( + sparseVectorF16Range(dim), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + multiplicationVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarVectorToVectorCases( + sparseF16Range(), + sparseVectorF16Range(dim), + nonConst ? 'unfiltered' : 'finite', + multiplicationScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_multiplication', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x and y are scalars +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, binary('*'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('*'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x *= y +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, compoundBinary('*='), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + binary('*'), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x *= y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + compoundBinary('*='), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `scalar_vec${dim}_const` : `scalar_vec${dim}_non_const` + ); + + await run( + t, + binary('*'), + [TypeF16, TypeVec(dim, TypeF16)], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_remainder.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_remainder.spec.js new file mode 100644 index 00000000000..31068964f8d --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_remainder.spec.js @@ -0,0 +1,217 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix f16 remainder expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF16Range, sparseVectorF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +const remainderVectorScalarInterval = (v, s) => { + return FP.f16.toVector(v.map(e => FP.f16.remainderInterval(e, s))); +}; + +const remainderScalarVectorInterval = (s, v) => { + return FP.f16.toVector(v.map(e => FP.f16.remainderInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarPairToIntervalCases( + sparseF16Range(), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f16.remainderInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorScalarToVectorCases( + sparseVectorF16Range(dim), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + remainderVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarVectorToVectorCases( + sparseF16Range(), + sparseVectorF16Range(dim), + nonConst ? 'unfiltered' : 'finite', + remainderScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_remainder', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x % y, where x and y are scalars +Accuracy: Derived from x - y * trunc(x/y) +` + ) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, binary('%'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x % y, where x and y are vectors +Accuracy: Derived from x - y * trunc(x/y) +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, binary('%'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x %= y +Accuracy: Derived from x - y * trunc(x/y) +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, compoundBinary('%='), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x % y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + binary('%'), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x %= y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + compoundBinary('%='), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x % y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `scalar_vec${dim}_const` : `scalar_vec${dim}_non_const` + ); + + await run( + t, + binary('%'), + [TypeF16, TypeVec(dim, TypeF16)], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_subtraction.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_subtraction.spec.js new file mode 100644 index 00000000000..195cf7d7627 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f16_subtraction.spec.js @@ -0,0 +1,216 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for non-matrix f16 subtraction expression +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16, TypeVec } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { sparseF16Range, sparseVectorF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { binary, compoundBinary } from './binary.js'; + +const subtractionVectorScalarInterval = (v, s) => { + return FP.f16.toVector(v.map(e => FP.f16.subtractionInterval(e, s))); +}; + +const subtractionScalarVectorInterval = (s, v) => { + return FP.f16.toVector(v.map(e => FP.f16.subtractionInterval(s, e))); +}; + +export const g = makeTestGroup(GPUTest); + +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarPairToIntervalCases( + sparseF16Range(), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f16.subtractionInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorScalarToVectorCases( + sparseVectorF16Range(dim), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + subtractionVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateScalarVectorToVectorCases( + sparseF16Range(), + sparseVectorF16Range(dim), + nonConst ? 'unfiltered' : 'finite', + subtractionScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f16_subtraction', { + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, +}); + +g.test('scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are scalars +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, binary('-'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('-'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x -= y +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' + ); + + await run(t, compoundBinary('-='), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('vector_scalar') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + binary('-'), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('vector_scalar_compound') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x -= y, where x is a vector and y is a scalar +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `vec${dim}_scalar_const` : `vec${dim}_scalar_non_const` + ); + + await run( + t, + compoundBinary('-='), + [TypeVec(dim, TypeF16), TypeF16], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); + +g.test('scalar_vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x is a scalar and y is a vector +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' ? `scalar_vec${dim}_const` : `scalar_vec${dim}_non_const` + ); + + await run( + t, + binary('-'), + [TypeF16, TypeVec(dim, TypeF16)], + TypeVec(dim, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_addition.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_addition.spec.js index a8ade0fabc7..50a13483154 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_addition.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_addition.spec.js @@ -23,138 +23,64 @@ const additionScalarVectorInterval = (s, v) => { export const g = makeTestGroup(GPUTest); +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarPairToIntervalCases( + sparseF32Range(), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f32.additionInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorScalarToVectorCases( + sparseVectorF32Range(dim), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + additionVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarVectorToVectorCases( + sparseF32Range(), + sparseVectorF32Range(dim), + nonConst ? 'unfiltered' : 'finite', + additionScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_addition', { - scalar_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'finite', - FP.f32.additionInterval - ); - }, - scalar_non_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'unfiltered', - FP.f32.additionInterval - ); - }, - vec2_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'finite', - additionVectorScalarInterval - ); - }, - vec2_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'unfiltered', - additionVectorScalarInterval - ); - }, - vec3_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'finite', - additionVectorScalarInterval - ); - }, - vec3_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'unfiltered', - additionVectorScalarInterval - ); - }, - vec4_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'finite', - additionVectorScalarInterval - ); - }, - vec4_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'unfiltered', - additionVectorScalarInterval - ); - }, - scalar_vec2_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'finite', - additionScalarVectorInterval - ); - }, - scalar_vec2_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'unfiltered', - additionScalarVectorInterval - ); - }, - scalar_vec3_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'finite', - additionScalarVectorInterval - ); - }, - scalar_vec3_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'unfiltered', - additionScalarVectorInterval - ); - }, - scalar_vec4_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'finite', - additionScalarVectorInterval - ); - }, - scalar_vec4_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'unfiltered', - additionScalarVectorInterval - ); - }, - subtraction_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'finite', - FP.f32.subtractionInterval - ); - }, + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, }); g.test('scalar') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( ` -Expression: x + y +Expression: x + y, where x and y are scalars Accuracy: Correctly rounded ` ) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .params(u => u.combine('inputSource', allInputSources)) .fn(async t => { const cases = await d.get( t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' @@ -163,6 +89,22 @@ Accuracy: Correctly rounded await run(t, binary('+'), [TypeF32, TypeF32], TypeF32, t.params, cases); }); +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x + y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('+'), [TypeF32, TypeF32], TypeF32, t.params, cases); + }); + g.test('scalar_compound') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_division.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_division.spec.js index 7beb7132d74..9f5d4dc53ea 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_division.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_division.spec.js @@ -23,130 +23,64 @@ const divisionScalarVectorInterval = (s, v) => { export const g = makeTestGroup(GPUTest); +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarPairToIntervalCases( + sparseF32Range(), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f32.divisionInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorScalarToVectorCases( + sparseVectorF32Range(dim), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + divisionVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarVectorToVectorCases( + sparseF32Range(), + sparseVectorF32Range(dim), + nonConst ? 'unfiltered' : 'finite', + divisionScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_division', { - scalar_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'finite', - FP.f32.divisionInterval - ); - }, - scalar_non_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'unfiltered', - FP.f32.divisionInterval - ); - }, - vec2_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'finite', - divisionVectorScalarInterval - ); - }, - vec2_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'unfiltered', - divisionVectorScalarInterval - ); - }, - vec3_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'finite', - divisionVectorScalarInterval - ); - }, - vec3_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'unfiltered', - divisionVectorScalarInterval - ); - }, - vec4_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'finite', - divisionVectorScalarInterval - ); - }, - vec4_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'unfiltered', - divisionVectorScalarInterval - ); - }, - scalar_vec2_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'finite', - divisionScalarVectorInterval - ); - }, - scalar_vec2_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'unfiltered', - divisionScalarVectorInterval - ); - }, - scalar_vec3_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'finite', - divisionScalarVectorInterval - ); - }, - scalar_vec3_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'unfiltered', - divisionScalarVectorInterval - ); - }, - scalar_vec4_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'finite', - divisionScalarVectorInterval - ); - }, - scalar_vec4_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'unfiltered', - divisionScalarVectorInterval - ); - }, + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, }); g.test('scalar') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( ` -Expression: x / y +Expression: x / y, where x and y are scalars Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126] ` ) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .params(u => u.combine('inputSource', allInputSources)) .fn(async t => { const cases = await d.get( t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' @@ -155,6 +89,22 @@ Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126] await run(t, binary('/'), [TypeF32, TypeF32], TypeF32, t.params, cases); }); +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x / y, where x and y are vectors +Accuracy: 2.5 ULP for |y| in the range [2^-126, 2^126] +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('/'), [TypeF32, TypeF32], TypeF32, t.params, cases); + }); + g.test('scalar_compound') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_addition.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_addition.spec.js index f1062c40fd9..119099de616 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_addition.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_addition.spec.js @@ -15,152 +15,25 @@ import { binary, compoundBinary } from './binary.js'; export const g = makeTestGroup(GPUTest); -export const d = makeCaseCache('binary/f32_matrix_addition', { - mat2x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat2x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat2x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat2x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat2x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat2x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat3x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat3x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat3x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat3x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat3x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat3x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat4x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat4x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat4x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat4x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat4x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.additionMatrixMatrixInterval - ); - }, - mat4x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.additionMatrixMatrixInterval - ); - }, -}); +// Cases: matCxR_[non_]const +const mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixPairToMatrixCases( + sparseMatrixF32Range(cols, rows), + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.additionMatrixMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f32_matrix_addition', mat_cases); g.test('matrix') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_matrix_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_matrix_multiplication.spec.js index 67c2d6f9f97..df119808726 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_matrix_multiplication.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_matrix_multiplication.spec.js @@ -15,440 +15,27 @@ import { binary, compoundBinary } from './binary.js'; export const g = makeTestGroup(GPUTest); -export const d = makeCaseCache('binary/f32_matrix_matrix_multiplication', { - mat2x2_mat2x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x2_mat2x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x3_mat2x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x3_mat2x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x2_mat3x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x2_mat3x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x3_mat3x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x3_mat3x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x4_mat2x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x4_mat2x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x2_mat4x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x2_mat4x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x4_mat4x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x4_mat4x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x3_mat4x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x3_mat4x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x4_mat3x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat2x4_mat3x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x3_mat3x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x3_mat3x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x2_mat3x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x2_mat3x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x3_mat2x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x3_mat2x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x2_mat2x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x2_mat2x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x4_mat3x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x4_mat3x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x3_mat4x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x3_mat4x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x4_mat4x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x4_mat4x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x2_mat4x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x2_mat4x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x4_mat2x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat3x4_mat2x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x4_mat4x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x4_mat4x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x2_mat4x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x2_mat4x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x4_mat2x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x4_mat2x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x2_mat2x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x2_mat2x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x3_mat4x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x3_mat4x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x4_mat3x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x4_mat3x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x3_mat3x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x3_mat3x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x2_mat3x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x2_mat3x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x3_mat2x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, - mat4x3_mat2x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.multiplicationMatrixMatrixInterval - ); - }, -}); +// Cases: matKxR_matCxK_[non_]const +const mat_mat_cases = [2, 3, 4] + .flatMap(k => + [2, 3, 4].flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${k}x${rows}_mat${cols}x${k}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixPairToMatrixCases( + sparseMatrixF32Range(k, rows), + sparseMatrixF32Range(cols, k), + nonConst ? 'unfiltered' : 'finite', + FP.f32.multiplicationMatrixMatrixInterval + ); + }, + })) + ) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f32_matrix_matrix_multiplication', mat_mat_cases); g.test('matrix_matrix') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_scalar_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_scalar_multiplication.spec.js index 64d2d4af6eb..82edc6eb2b1 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_scalar_multiplication.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_scalar_multiplication.spec.js @@ -15,295 +15,45 @@ import { binary, compoundBinary } from './binary.js'; export const g = makeTestGroup(GPUTest); +// Cases: matCxR_scalar_[non_]const +const mat_scalar_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixScalarToMatrixCases( + sparseMatrixF32Range(cols, rows), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f32.multiplicationMatrixScalarInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: scalar_matCxR_[non_]const +const scalar_mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`scalar_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarMatrixToMatrixCases( + sparseF32Range(), + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.multiplicationScalarMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_matrix_scalar_multiplication', { - mat2x2_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat2x2_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat2x3_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat2x3_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat2x4_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat2x4_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat3x2_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat3x2_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat3x3_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat3x3_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat3x4_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat3x4_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat4x2_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat4x2_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat4x3_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat4x3_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat4x4_scalar_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseF32Range(), - 'finite', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - mat4x4_scalar_non_const: () => { - return FP.f32.generateMatrixScalarToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationMatrixScalarInterval - ); - }, - scalar_mat2x2_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat2x2_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat2x3_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat2x3_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat2x4_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat2x4_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat3x2_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat3x2_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat3x3_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat3x3_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat3x4_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat3x4_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat4x2_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat4x2_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat4x3_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat4x3_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat4x4_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.multiplicationScalarMatrixInterval - ); - }, - scalar_mat4x4_non_const: () => { - return FP.f32.generateScalarMatrixToMatrixCases( - sparseF32Range(), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.multiplicationScalarMatrixInterval - ); - }, + ...mat_scalar_cases, + ...scalar_mat_cases, }); g.test('matrix_scalar') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_subtraction.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_subtraction.spec.js index 992a0b80dba..4a5eb65e6f0 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_subtraction.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_subtraction.spec.js @@ -15,152 +15,25 @@ import { binary, compoundBinary } from './binary.js'; export const g = makeTestGroup(GPUTest); -export const d = makeCaseCache('binary/f32_matrix_subtraction', { - mat2x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat2x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat2x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat2x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 3), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat2x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat2x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 4), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat3x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat3x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 2), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat3x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat3x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 3), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat3x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat3x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(3, 4), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat4x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat4x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 2), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat4x3_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat4x3_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 3), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat4x4_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - mat4x4_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(4, 4), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, -}); +// Cases: matCxR_[non_]const +const mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixPairToMatrixCases( + sparseMatrixF32Range(cols, rows), + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.subtractionMatrixMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('binary/f32_matrix_subtraction', mat_cases); g.test('matrix') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_vector_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_vector_multiplication.spec.js index 50eab8e6f67..0ec422536dc 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_vector_multiplication.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_matrix_vector_multiplication.spec.js @@ -15,311 +15,45 @@ import { binary, compoundBinary } from './binary.js'; export const g = makeTestGroup(GPUTest); +// Cases: matCxR_vecC_[non_]const +const mat_vec_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`mat${cols}x${rows}_vec${cols}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixVectorToVectorCases( + sparseMatrixF32Range(cols, rows), + sparseVectorF32Range(cols), + nonConst ? 'unfiltered' : 'finite', + FP.f32.multiplicationMatrixVectorInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: vecR_matCxR_[non_]const +const vec_mat_cases = [2, 3, 4] + .flatMap(rows => + [2, 3, 4].flatMap(cols => + [true, false].map(nonConst => ({ + [`vec${rows}_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorMatrixToVectorCases( + sparseVectorF32Range(rows), + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.multiplicationVectorMatrixInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_matrix_vector_multiplication', { - mat2x2_vec2_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(2, 2), - sparseVectorF32Range(2), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat2x2_vec2_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(2, 2), - sparseVectorF32Range(2), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat2x3_vec2_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(2, 3), - sparseVectorF32Range(2), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat2x3_vec2_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(2, 3), - sparseVectorF32Range(2), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat2x4_vec2_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(2, 4), - sparseVectorF32Range(2), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat2x4_vec2_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(2, 4), - sparseVectorF32Range(2), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat3x2_vec3_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(3, 2), - sparseVectorF32Range(3), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat3x2_vec3_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(3, 2), - sparseVectorF32Range(3), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat3x3_vec3_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(3, 3), - sparseVectorF32Range(3), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat3x3_vec3_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(3, 3), - sparseVectorF32Range(3), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat3x4_vec3_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(3, 4), - sparseVectorF32Range(3), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat3x4_vec3_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(3, 4), - sparseVectorF32Range(3), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat4x2_vec4_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(4, 2), - sparseVectorF32Range(4), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat4x2_vec4_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(4, 2), - sparseVectorF32Range(4), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat4x3_vec4_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(4, 3), - sparseVectorF32Range(4), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat4x3_vec4_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(4, 3), - sparseVectorF32Range(4), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat4x4_vec4_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(4, 4), - sparseVectorF32Range(4), - 'finite', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - mat4x4_vec4_non_const: () => { - return FP.f32.generateMatrixVectorToVectorCases( - sparseMatrixF32Range(4, 4), - sparseVectorF32Range(4), - 'unfiltered', - FP.f32.multiplicationMatrixVectorInterval - ); - }, - vec2_mat2x2_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(2), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec2_mat2x2_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(2), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec2_mat3x2_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(2), - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec2_mat3x2_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(2), - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec2_mat4x2_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(2), - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec2_mat4x2_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(2), - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec3_mat2x3_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(3), - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec3_mat2x3_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(3), - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec3_mat3x3_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(3), - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec3_mat3x3_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(3), - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec3_mat4x3_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(3), - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec3_mat4x3_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(3), - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec4_mat2x4_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(4), - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec4_mat2x4_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(4), - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec4_mat3x4_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(4), - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec4_mat3x4_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(4), - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec4_mat4x4_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(4), - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - vec4_mat4x4_non_const: () => { - return FP.f32.generateVectorMatrixToVectorCases( - sparseVectorF32Range(4), - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.multiplicationVectorMatrixInterval - ); - }, - subtraction_mat2x2_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.subtractionMatrixMatrixInterval - ); - }, - subtraction_mat2x2_non_const: () => { - return FP.f32.generateMatrixPairToMatrixCases( - sparseMatrixF32Range(2, 2), - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.subtractionMatrixMatrixInterval - ); - }, + ...mat_vec_cases, + ...vec_mat_cases, }); g.test('matrix_vector') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_multiplication.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_multiplication.spec.js index 5ad732f498a..59fb529e66e 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_multiplication.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_multiplication.spec.js @@ -23,130 +23,64 @@ const multiplicationScalarVectorInterval = (s, v) => { export const g = makeTestGroup(GPUTest); +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarPairToIntervalCases( + sparseF32Range(), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f32.multiplicationInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorScalarToVectorCases( + sparseVectorF32Range(dim), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + multiplicationVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarVectorToVectorCases( + sparseF32Range(), + sparseVectorF32Range(dim), + nonConst ? 'unfiltered' : 'finite', + multiplicationScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_multiplication', { - scalar_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'finite', - FP.f32.multiplicationInterval - ); - }, - scalar_non_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'unfiltered', - FP.f32.multiplicationInterval - ); - }, - vec2_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'finite', - multiplicationVectorScalarInterval - ); - }, - vec2_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'unfiltered', - multiplicationVectorScalarInterval - ); - }, - vec3_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'finite', - multiplicationVectorScalarInterval - ); - }, - vec3_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'unfiltered', - multiplicationVectorScalarInterval - ); - }, - vec4_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'finite', - multiplicationVectorScalarInterval - ); - }, - vec4_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'unfiltered', - multiplicationVectorScalarInterval - ); - }, - scalar_vec2_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'finite', - multiplicationScalarVectorInterval - ); - }, - scalar_vec2_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'unfiltered', - multiplicationScalarVectorInterval - ); - }, - scalar_vec3_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'finite', - multiplicationScalarVectorInterval - ); - }, - scalar_vec3_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'unfiltered', - multiplicationScalarVectorInterval - ); - }, - scalar_vec4_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'finite', - multiplicationScalarVectorInterval - ); - }, - scalar_vec4_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'unfiltered', - multiplicationScalarVectorInterval - ); - }, + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, }); g.test('scalar') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( ` -Expression: x * y +Expression: x * y, where x and y are scalars Accuracy: Correctly rounded ` ) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .params(u => u.combine('inputSource', allInputSources)) .fn(async t => { const cases = await d.get( t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' @@ -155,6 +89,22 @@ Accuracy: Correctly rounded await run(t, binary('*'), [TypeF32, TypeF32], TypeF32, t.params, cases); }); +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x * y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('*'), [TypeF32, TypeF32], TypeF32, t.params, cases); + }); + g.test('scalar_compound') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_remainder.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_remainder.spec.js index eb55aed951c..41008bdd2bc 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_remainder.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_remainder.spec.js @@ -23,130 +23,64 @@ const remainderScalarVectorInterval = (s, v) => { export const g = makeTestGroup(GPUTest); +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarPairToIntervalCases( + sparseF32Range(), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f32.remainderInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorScalarToVectorCases( + sparseVectorF32Range(dim), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + remainderVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarVectorToVectorCases( + sparseF32Range(), + sparseVectorF32Range(dim), + nonConst ? 'unfiltered' : 'finite', + remainderScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_remainder', { - scalar_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'finite', - FP.f32.remainderInterval - ); - }, - scalar_non_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'unfiltered', - FP.f32.remainderInterval - ); - }, - vec2_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'finite', - remainderVectorScalarInterval - ); - }, - vec2_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'unfiltered', - remainderVectorScalarInterval - ); - }, - vec3_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'finite', - remainderVectorScalarInterval - ); - }, - vec3_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'unfiltered', - remainderVectorScalarInterval - ); - }, - vec4_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'finite', - remainderVectorScalarInterval - ); - }, - vec4_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'unfiltered', - remainderVectorScalarInterval - ); - }, - scalar_vec2_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'finite', - remainderScalarVectorInterval - ); - }, - scalar_vec2_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'unfiltered', - remainderScalarVectorInterval - ); - }, - scalar_vec3_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'finite', - remainderScalarVectorInterval - ); - }, - scalar_vec3_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'unfiltered', - remainderScalarVectorInterval - ); - }, - scalar_vec4_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'finite', - remainderScalarVectorInterval - ); - }, - scalar_vec4_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'unfiltered', - remainderScalarVectorInterval - ); - }, + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, }); g.test('scalar') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( ` -Expression: x % y +Expression: x % y, where x and y are scalars Accuracy: Derived from x - y * trunc(x/y) ` ) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .params(u => u.combine('inputSource', allInputSources)) .fn(async t => { const cases = await d.get( t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' @@ -155,6 +89,22 @@ Accuracy: Derived from x - y * trunc(x/y) await run(t, binary('%'), [TypeF32, TypeF32], TypeF32, t.params, cases); }); +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x % y, where x and y are vectors +Accuracy: Derived from x - y * trunc(x/y) +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('%'), [TypeF32, TypeF32], TypeF32, t.params, cases); + }); + g.test('scalar_compound') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_subtraction.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_subtraction.spec.js index 3b0142e9394..d6d6ab216f7 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_subtraction.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/binary/f32_subtraction.spec.js @@ -23,130 +23,64 @@ const subtractionScalarVectorInterval = (s, v) => { export const g = makeTestGroup(GPUTest); +const scalar_cases = [true, false] + .map(nonConst => ({ + [`scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarPairToIntervalCases( + sparseF32Range(), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + FP.f32.subtractionInterval + ); + }, + })) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const vector_scalar_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`vec${dim}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorScalarToVectorCases( + sparseVectorF32Range(dim), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + subtractionVectorScalarInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +const scalar_vector_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`scalar_vec${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateScalarVectorToVectorCases( + sparseF32Range(), + sparseVectorF32Range(dim), + nonConst ? 'unfiltered' : 'finite', + subtractionScalarVectorInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('binary/f32_subtraction', { - scalar_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'finite', - FP.f32.subtractionInterval - ); - }, - scalar_non_const: () => { - return FP.f32.generateScalarPairToIntervalCases( - sparseF32Range(), - sparseF32Range(), - 'unfiltered', - FP.f32.subtractionInterval - ); - }, - vec2_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'finite', - subtractionVectorScalarInterval - ); - }, - vec2_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(2), - sparseF32Range(), - 'unfiltered', - subtractionVectorScalarInterval - ); - }, - vec3_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'finite', - subtractionVectorScalarInterval - ); - }, - vec3_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(3), - sparseF32Range(), - 'unfiltered', - subtractionVectorScalarInterval - ); - }, - vec4_scalar_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'finite', - subtractionVectorScalarInterval - ); - }, - vec4_scalar_non_const: () => { - return FP.f32.generateVectorScalarToVectorCases( - sparseVectorF32Range(4), - sparseF32Range(), - 'unfiltered', - subtractionVectorScalarInterval - ); - }, - scalar_vec2_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'finite', - subtractionScalarVectorInterval - ); - }, - scalar_vec2_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(2), - 'unfiltered', - subtractionScalarVectorInterval - ); - }, - scalar_vec3_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'finite', - subtractionScalarVectorInterval - ); - }, - scalar_vec3_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(3), - 'unfiltered', - subtractionScalarVectorInterval - ); - }, - scalar_vec4_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'finite', - subtractionScalarVectorInterval - ); - }, - scalar_vec4_non_const: () => { - return FP.f32.generateScalarVectorToVectorCases( - sparseF32Range(), - sparseVectorF32Range(4), - 'unfiltered', - subtractionScalarVectorInterval - ); - }, + ...scalar_cases, + ...vector_scalar_cases, + ...scalar_vector_cases, }); g.test('scalar') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( ` -Expression: x - y +Expression: x - y, where x and y are scalars Accuracy: Correctly rounded ` ) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .params(u => u.combine('inputSource', allInputSources)) .fn(async t => { const cases = await d.get( t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' @@ -155,6 +89,22 @@ Accuracy: Correctly rounded await run(t, binary('-'), [TypeF32, TypeF32], TypeF32, t.params, cases); }); +g.test('vector') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: x - y, where x and y are vectors +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'scalar_const' : 'scalar_non_const' // Using vectorize to generate vector cases based on scalar cases + ); + await run(t, binary('-'), [TypeF32, TypeF32], TypeF32, t.params, cases); + }); + g.test('scalar_compound') .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') .desc( diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js index 915a2c16156..f342db70547 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js @@ -19,13 +19,21 @@ Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kBit } from '../../../../../util/constants.js'; -import { i32Bits, TypeF32, TypeI32, TypeU32, u32Bits } from '../../../../../util/conversion.js'; +import { + i32Bits, + TypeF32, + TypeF16, + TypeI32, + TypeU32, + u32Bits, + TypeAbstractFloat, +} from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, fullF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -33,6 +41,16 @@ export const d = makeCaseCache('abs', { f32: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.absInterval); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.absInterval); + }, + abstract: () => { + return FP.abstract.generateScalarToIntervalCases( + fullF64Range(), + 'unfiltered', + FP.abstract.absInterval + ); + }, }); g.test('abstract_int') @@ -137,8 +155,13 @@ g.test('i32') g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run(t, abstractBuiltin('abs'), [TypeAbstractFloat], TypeAbstractFloat, t.params, cases); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -153,4 +176,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('abs'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acos.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acos.spec.js index a438fb2e179..9079adbd9ef 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acos.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acos.spec.js @@ -10,9 +10,9 @@ Returns the arc cosine of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { linearRange, fullF32Range } from '../../../../../util/math.js'; +import { linearRange, fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -20,17 +20,28 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -const inputs = [ +const f32_inputs = [ ...linearRange(-1, 1, 100), // acos is defined on [-1, 1] ...fullF32Range(), ]; +const f16_inputs = [ + ...linearRange(-1, 1, 100), // acos is defined on [-1, 1] + ...fullF16Range(), +]; + export const d = makeCaseCache('acos', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.acosInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.acosInterval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.acosInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.acosInterval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.acosInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.acosInterval); }, }); @@ -53,4 +64,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('acos'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acosh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acosh.spec.js index d52b8a7a6dc..fe537ba3ce0 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acosh.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acosh.spec.js @@ -14,9 +14,9 @@ Note: The result is not mathematically meaningful when e < 1. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { biasedRange, fullF32Range } from '../../../../../util/math.js'; +import { biasedRange, fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -24,17 +24,28 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -const inputs = [ +const f32_inputs = [ ...biasedRange(1, 2, 100), // x near 1 can be problematic to implement ...fullF32Range(), ]; +const f16_inputs = [ + ...biasedRange(1, 2, 100), // x near 1 can be problematic to implement + ...fullF16Range(), +]; + export const d = makeCaseCache('acosh', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', ...FP.f32.acoshIntervals); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', ...FP.f32.acoshIntervals); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', ...FP.f32.acoshIntervals); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', ...FP.f32.acoshIntervals); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', ...FP.f16.acoshIntervals); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', ...FP.f16.acoshIntervals); }, }); @@ -57,4 +68,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('acosh'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/arrayLength.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/arrayLength.spec.js index 09ff436dc53..e31fbd832a0 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/arrayLength.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/arrayLength.spec.js @@ -17,15 +17,19 @@ const kTestTypes = [ { type: 'u32', stride: 4 }, { type: 'i32', stride: 4 }, { type: 'f32', stride: 4 }, + { type: 'f16', stride: 2 }, { type: 'vec2', stride: 8 }, { type: 'vec2', stride: 8 }, { type: 'vec2', stride: 8 }, + { type: 'vec2', stride: 4 }, { type: 'vec3', stride: 16 }, { type: 'vec3', stride: 16 }, { type: 'vec3', stride: 16 }, + { type: 'vec3', stride: 8 }, { type: 'vec4', stride: 16 }, { type: 'vec4', stride: 16 }, { type: 'vec4', stride: 16 }, + { type: 'vec4', stride: 8 }, { type: 'mat2x2', stride: 16 }, { type: 'mat2x3', stride: 32 }, { type: 'mat2x4', stride: 32 }, @@ -35,11 +39,21 @@ const kTestTypes = [ { type: 'mat4x2', stride: 32 }, { type: 'mat4x3', stride: 64 }, { type: 'mat4x4', stride: 64 }, + { type: 'mat2x2', stride: 8 }, + { type: 'mat2x3', stride: 16 }, + { type: 'mat2x4', stride: 16 }, + { type: 'mat3x2', stride: 12 }, + { type: 'mat3x3', stride: 24 }, + { type: 'mat3x4', stride: 24 }, + { type: 'mat4x2', stride: 16 }, + { type: 'mat4x3', stride: 32 }, + { type: 'mat4x4', stride: 32 }, { type: 'atomic', stride: 4 }, { type: 'atomic', stride: 4 }, { type: 'array', stride: 16 }, { type: 'array', stride: 16 }, { type: 'array', stride: 16 }, + { type: 'array', stride: 8 }, // Structures - see declarations below. { type: 'ElemStruct', stride: 4 }, { type: 'ElemStruct_ImplicitPadding', stride: 16 }, @@ -110,6 +124,24 @@ function runShaderTest(t, wgsl, stride, offset, buffer_size, binding_size, bindi t.expectGPUBufferValuesEqual(lengthBuffer, new Uint32Array([length])); } +/** + * Test if a WGSL type string require using f16 extension. + * + * @param test_type The wgsl type for testing + */ +function typeRequiresF16(test_type) { + return test_type.includes('f16'); +} + +/** + * Generate the necessary wgsl header for tested type, especially for f16 + * + * @param test_type The wgsl type for testing + */ +function shaderHeader(test_type) { + return typeRequiresF16(test_type) ? 'enable f16;\n\n' : ''; +} + g.test('single_element') .specURL('https://www.w3.org/TR/WGSL/#arrayLength-builtin') .desc( @@ -121,8 +153,14 @@ g.test('single_element') ` ) .params(u => u.combineWithParams(kTestTypes)) + .beforeAllSubcases(t => { + if (typeRequiresF16(t.params.type)) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) .fn(t => { const wgsl = + shaderHeader(t.params.type) + kWgslStructures + ` @group(0) @binding(0) var buffer : array<${t.params.type}>; @@ -132,7 +170,10 @@ g.test('single_element') length = arrayLength(&buffer); } `; - runShaderTest(t, wgsl, t.params.stride, 0, t.params.stride, t.params.stride, 0); + let buffer_size = t.params.stride; + // Ensure that binding size is multiple of 4. + buffer_size = buffer_size + ((~buffer_size + 1) & 3); + runShaderTest(t, wgsl, t.params.stride, 0, buffer_size, buffer_size, 0); }); g.test('multiple_elements') @@ -150,8 +191,14 @@ g.test('multiple_elements') ` ) .params(u => u.combine('buffer_size', [640, 1004, 1048576]).combineWithParams(kTestTypes)) + .beforeAllSubcases(t => { + if (typeRequiresF16(t.params.type)) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) .fn(t => { const wgsl = + shaderHeader(t.params.type) + kWgslStructures + ` @group(0) @binding(0) var buffer : array<${t.params.type}>; @@ -179,9 +226,15 @@ g.test('struct_member') ` ) .params(u => u.combine('member_offset', [0, 4, 20]).combineWithParams(kTestTypes)) + .beforeAllSubcases(t => { + if (typeRequiresF16(t.params.type)) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) .fn(t => { const member_offset = align(t.params.member_offset, t.params.stride); const wgsl = + shaderHeader(t.params.type) + kWgslStructures + ` alias ArrayType = array<${t.params.type}>; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asin.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asin.spec.js index 02e2383b629..0426a9bd423 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asin.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asin.spec.js @@ -10,9 +10,9 @@ Returns the arc sine of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { linearRange, fullF32Range } from '../../../../../util/math.js'; +import { linearRange, fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -20,17 +20,28 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -const inputs = [ +const f32_inputs = [ ...linearRange(-1, 1, 100), // asin is defined on [-1, 1] ...fullF32Range(), ]; +const f16_inputs = [ + ...linearRange(-1, 1, 100), // asin is defined on [-1, 1] + ...fullF16Range(), +]; + export const d = makeCaseCache('asin', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.asinInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.asinInterval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.asinInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.asinInterval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.asinInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.asinInterval); }, }); @@ -53,4 +64,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('asin'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asinh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asinh.spec.js index 9dfb7dbfeb6..988abf62b5a 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asinh.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asinh.spec.js @@ -13,9 +13,9 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -27,6 +27,9 @@ export const d = makeCaseCache('asinh', { f32: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.asinhInterval); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.asinhInterval); + }, }); g.test('abstract_float') @@ -48,4 +51,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('asinh'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js index b2a4f3f8d9f..d14a4a2f82d 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js @@ -11,9 +11,9 @@ Returns the arc tangent of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -21,25 +21,23 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -const inputs = [ - // Known values - -Math.sqrt(3), - -1, - -1 / Math.sqrt(3), - 0, - 1, - 1 / Math.sqrt(3), - Math.sqrt(3), +const known_values = [-Math.sqrt(3), -1, -1 / Math.sqrt(3), 0, 1, 1 / Math.sqrt(3), Math.sqrt(3)]; - ...fullF32Range(), -]; +const f32_inputs = [...known_values, ...fullF32Range()]; +const f16_inputs = [...known_values, ...fullF16Range()]; export const d = makeCaseCache('atan', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.atanInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.atanInterval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.atanInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.atanInterval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.atanInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.atanInterval); }, }); @@ -68,4 +66,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('atan'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js index 735767f9d90..185d104062b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js @@ -11,9 +11,9 @@ Returns the arc tangent of e1 over e2. Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { linearRange, sparseF32Range } from '../../../../../util/math.js'; +import { linearRange, sparseF32Range, sparseF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -23,8 +23,8 @@ export const g = makeTestGroup(GPUTest); export const d = makeCaseCache('atan2', { f32: () => { - // Using sparse, since there a N^2 cases being generated, but including extra values around 0, since that is where - // there is a discontinuity that implementations tend to behave badly at. + // Using sparse range since there are N^2 cases being generated, and also including extra values + // around 0, where there is a discontinuity that implementations may behave badly at. const numeric_range = [ ...sparseF32Range(), ...linearRange(kValue.f32.negative.max, kValue.f32.positive.min, 10), @@ -37,6 +37,21 @@ export const d = makeCaseCache('atan2', { FP.f32.atan2Interval ); }, + f16: () => { + // Using sparse range since there are N^2 cases being generated, and also including extra values + // around 0, where there is a discontinuity that implementations may behave badly at. + const numeric_range = [ + ...sparseF16Range(), + ...linearRange(kValue.f16.negative.max, kValue.f16.positive.min, 10), + ]; + + return FP.f16.generateScalarPairToIntervalCases( + numeric_range, + numeric_range, + 'unfiltered', + FP.f16.atan2Interval + ); + }, }); g.test('abstract_float') @@ -64,4 +79,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('atan2'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atanh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atanh.spec.js index 975717088ac..1d74bb11a2c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atanh.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atanh.spec.js @@ -14,9 +14,9 @@ Note: The result is not mathematically meaningful when abs(e) >= 1. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { biasedRange, fullF32Range } from '../../../../../util/math.js'; +import { biasedRange, fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -24,7 +24,7 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -const inputs = [ +const f32_inputs = [ ...biasedRange(kValue.f32.negative.less_than_one, -0.9, 20), // discontinuity at x = -1 -1, ...biasedRange(kValue.f32.positive.less_than_one, 0.9, 20), // discontinuity at x = 1 @@ -32,12 +32,26 @@ const inputs = [ ...fullF32Range(), ]; +const f16_inputs = [ + ...biasedRange(kValue.f16.negative.less_than_one, -0.9, 20), // discontinuity at x = -1 + -1, + ...biasedRange(kValue.f16.positive.less_than_one, 0.9, 20), // discontinuity at x = 1 + 1, + ...fullF16Range(), +]; + export const d = makeCaseCache('atanh', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.atanhInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.atanhInterval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.atanhInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.atanhInterval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.atanhInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.atanhInterval); }, }); @@ -60,4 +74,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('atanh'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAdd.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAdd.spec.js index 612c95df929..96287e29989 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAdd.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAdd.spec.js @@ -36,7 +36,7 @@ fn atomicAdd(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize * t.params.dispatchSize; @@ -45,7 +45,7 @@ fn atomicAdd(atomic_ptr: ptr, read_write>, v: T) -> T const initValue = 0; const op = `atomicAdd(&output[0], 1)`; - const expected = new (typedArrayCtor(t.params.scalarKind))(bufferNumElements); + const expected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); expected[0] = numInvocations; runStorageVariableTest({ @@ -73,7 +73,7 @@ fn atomicAdd(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { // Allocate one extra element to ensure it doesn't get modified @@ -82,7 +82,7 @@ fn atomicAdd(atomic_ptr: ptr, read_write>, v: T) -> T const initValue = 0; const op = `atomicAdd(&wg[0], 1)`; - const expected = new (typedArrayCtor(t.params.scalarKind))( + const expected = new (typedArrayCtor(t.params.scalarType))( wgNumElements * t.params.dispatchSize ); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAnd.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAnd.spec.js index 35ee38c139d..e6acf52beea 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAnd.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicAnd.spec.js @@ -39,7 +39,7 @@ fn atomicAnd(atomic_ptr: ptr, read_write>, v: T) -> T .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) .combine('mapId', keysOf(kMapId)) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize * t.params.dispatchSize; @@ -51,15 +51,15 @@ fn atomicAnd(atomic_ptr: ptr, read_write>, v: T) -> T // Note: Both WGSL and JS will shift left 1 by id modulo 32. const initValue = 0xffffffff; - const scalarKind = t.params.scalarKind; + const scalarType = t.params.scalarType; const mapId = kMapId[t.params.mapId]; const extra = mapId.wgsl(numInvocations); // Defines map_id() const op = ` let i = map_id(u32(id)); - atomicAnd(&output[i / 32], ~(${scalarKind}(1) << i)) + atomicAnd(&output[i / 32], ~(${scalarType}(1) << i)) `; - const expected = new (typedArrayCtor(scalarKind))(bufferNumElements).fill(initValue); + const expected = new (typedArrayCtor(scalarType))(bufferNumElements).fill(initValue); for (let id = 0; id < numInvocations; ++id) { const i = mapId.f(id, numInvocations); expected[Math.floor(i / 32)] &= ~(1 << i); @@ -92,7 +92,7 @@ fn atomicAnd(atomic_ptr: ptr, read_write>, v: T) -> T .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) .combine('mapId', keysOf(kMapId)) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize; @@ -104,15 +104,15 @@ fn atomicAnd(atomic_ptr: ptr, read_write>, v: T) -> T // Note: Both WGSL and JS will shift left 1 by id modulo 32. const initValue = 0xffffffff; - const scalarKind = t.params.scalarKind; + const scalarType = t.params.scalarType; const mapId = kMapId[t.params.mapId]; const extra = mapId.wgsl(numInvocations); // Defines map_id() const op = ` let i = map_id(u32(id)); - atomicAnd(&wg[i / 32], ~(${scalarKind}(1) << i)) + atomicAnd(&wg[i / 32], ~(${scalarType}(1) << i)) `; - const expected = new (typedArrayCtor(scalarKind))(wgNumElements * t.params.dispatchSize).fill( + const expected = new (typedArrayCtor(scalarType))(wgNumElements * t.params.dispatchSize).fill( initValue ); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicCompareExchangeWeak.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicCompareExchangeWeak.spec.js index 747b14b8329..de35fb06c14 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicCompareExchangeWeak.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicCompareExchangeWeak.spec.js @@ -15,11 +15,21 @@ That is, the second component of the result vector may be false even if the firs component of the result vector equals cmp. `; import { makeTestGroup } from '../../../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../../../common/util/data_tables.js'; +import { assert } from '../../../../../../../common/util/util.js'; import { GPUTest } from '../../../../../../gpu_test.js'; +import { + dispatchSizes, + workgroupSizes, + typedArrayCtor, + kMapId, + onlyWorkgroupSizes, +} from './harness.js'; + export const g = makeTestGroup(GPUTest); -g.test('exchange') +g.test('compare_exchange_weak_storage_basic') .specURL('https://www.w3.org/TR/WGSL/#atomic-rmw') .desc( ` @@ -34,5 +44,707 @@ struct __atomic_compare_exchange_result { } ` ) - .params(u => u.combine('SC', ['storage', 'uniform']).combine('T', ['i32', 'u32'])) - .unimplemented(); + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize * t.params.dispatchSize; + const bufferNumElements = numInvocations; + const scalarType = t.params.scalarType; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + @group(0) @binding(0) + var input : array>; + + @group(0) @binding(1) + var output : array<${scalarType}>; + + @group(0) @binding(2) + var exchanged : array<${scalarType}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(global_invocation_id) global_invocation_id : vec3, + ) { + let id = ${scalarType}(global_invocation_id[0]); + + // Exchange every third value + var comp = id + 1; + if (id % 3 == 0) { + comp = id; + } + let r = atomicCompareExchangeWeak(&input[id], comp, map_id(id * 2)); + + // Store results + output[id] = r.old_value; + if (r.exchanged) { + exchanged[id] = 1; + } else { + exchanged[id] = 0; + } + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + // Create input buffer with values [0..n] + const inputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(inputBuffer); + const data = new arrayType(inputBuffer.getMappedRange()); + data.forEach((_, i) => (data[i] = i)); + inputBuffer.unmap(); + + const outputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const exchangedBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(exchangedBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: inputBuffer } }, + { binding: 1, resource: { buffer: outputBuffer } }, + { binding: 2, resource: { buffer: exchangedBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(t.params.dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Output buffer should be the same as the initial input buffer as it contains + // values returned from atomicCompareExchangeWeak + const outputExpected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); + outputExpected.forEach((_, i) => (outputExpected[i] = i)); + t.expectGPUBufferValuesEqual(outputBuffer, outputExpected); + + // Read back exchanged buffer + const exchangedBufferResult = await t.readGPUBufferRangeTyped(exchangedBuffer, { + type: arrayType, + typedLength: exchangedBuffer.size / arrayType.BYTES_PER_ELEMENT, + }); + + // The input buffer should have been modified to a computed value for every third value, + // unless the comparison spuriously failed. + const inputExpected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); + inputExpected.forEach((_, i) => { + if (i % 3 === 0 && exchangedBufferResult.data[i]) { + inputExpected[i] = mapId.f(i * 2, numInvocations); + } else { + inputExpected[i] = i; // No change + } + }); + t.expectGPUBufferValuesEqual(inputBuffer, inputExpected); + }); + +g.test('compare_exchange_weak_workgroup_basic') + .specURL('https://www.w3.org/TR/WGSL/#atomic-rmw') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicCompareExchangeWeak(atomic_ptr: ptr, read_write>, cmp: T, v: T) -> __atomic_compare_exchange_result + +struct __atomic_compare_exchange_result { + old_value : T, // old value stored in the atomic + exchanged : bool, // true if the exchange was done +} +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize; + const wgNumElements = numInvocations; + const scalarType = t.params.scalarType; + const dispatchSize = t.params.dispatchSize; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + var wg: array, ${wgNumElements}>; + + @group(0) @binding(0) + var output: array<${scalarType}, ${wgNumElements * dispatchSize}>; + + @group(0) @binding(1) + var exchanged: array<${scalarType}, ${wgNumElements * dispatchSize}>; + + // Result of each workgroup is written to output[workgroup_id.x] + @group(0) @binding(2) + var wg_copy: array<${scalarType}, ${wgNumElements * dispatchSize}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(local_invocation_index) local_invocation_index: u32, + @builtin(workgroup_id) workgroup_id : vec3 + ) { + let id = ${scalarType}(local_invocation_index); + let global_id = ${scalarType}(workgroup_id.x * ${wgNumElements} + local_invocation_index); + + // Initialize wg[id] with this invocations global id + atomicStore(&wg[id], global_id); + + // Exchange every third value + var comp = global_id + 1; + if (global_id % 3 == 0) { + comp = global_id; + } + let r = atomicCompareExchangeWeak(&wg[id], comp, map_id(global_id * 2)); + + // Store results + output[global_id] = r.old_value; + if (r.exchanged) { + exchanged[global_id] = 1; + } else { + exchanged[global_id] = 0; + } + + // Copy new value into wg_copy + wg_copy[global_id] = atomicLoad(&wg[id]); + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + const outputBuffer = t.device.createBuffer({ + size: wgNumElements * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const wgCopyBuffer = t.device.createBuffer({ + size: wgNumElements * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const exchangedBuffer = t.device.createBuffer({ + size: wgNumElements * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(exchangedBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: outputBuffer } }, + { binding: 1, resource: { buffer: exchangedBuffer } }, + { binding: 2, resource: { buffer: wgCopyBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Output buffer should be the same as the initial wg buffer as it contains + // values returned from atomicCompareExchangeWeak + const outputExpected = new (typedArrayCtor(t.params.scalarType))(wgNumElements * dispatchSize); + outputExpected.forEach((_, i) => (outputExpected[i] = i)); + t.expectGPUBufferValuesEqual(outputBuffer, outputExpected); + + // Read back exchanged buffer + const exchangedBufferResult = await t.readGPUBufferRangeTyped(exchangedBuffer, { + type: arrayType, + typedLength: exchangedBuffer.size / arrayType.BYTES_PER_ELEMENT, + }); + + // And the wg copy buffer should have been modified to a computed value for every third value, + // unless the comparison spuriously failed. + const wgCopyBufferExpected = new (typedArrayCtor(t.params.scalarType))( + wgNumElements * dispatchSize + ); + + wgCopyBufferExpected.forEach((_, i) => { + if (i % 3 === 0 && exchangedBufferResult.data[i]) { + wgCopyBufferExpected[i] = mapId.f(i * 2, numInvocations); + } else { + wgCopyBufferExpected[i] = i; // No change + } + }); + t.expectGPUBufferValuesEqual(wgCopyBuffer, wgCopyBufferExpected); + }); + +g.test('compare_exchange_weak_storage_advanced') + .specURL('https://www.w3.org/TR/WGSL/#atomic-rmw') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicCompareExchangeWeak(atomic_ptr: ptr, read_write>, cmp: T, v: T) -> __atomic_compare_exchange_result + +struct __atomic_compare_exchange_result { + old_value : T, // old value stored in the atomic + exchanged : bool, // true if the exchange was done +} +` + ) + .params(u => + u + .combine('workgroupSize', onlyWorkgroupSizes) // + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize; + const scalarType = t.params.scalarType; + + // Number of times each workgroup attempts to exchange the same value to the same memory address + const numWrites = 4; + + const bufferNumElements = numInvocations * numWrites; + const pingPongValues = [24, 68]; + + const wgsl = ` + @group(0) @binding(0) + var data : atomic<${scalarType}>; + + @group(0) @binding(1) + var old_values : array<${scalarType}>; + + @group(0) @binding(2) + var exchanged : array<${scalarType}>; + + fn ping_pong_value(i: u32) -> ${scalarType} { + if (i % 2 == 0) { + return ${pingPongValues[0]}; + } else { + return ${pingPongValues[1]}; + } + } + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(global_invocation_id) global_invocation_id : vec3, + ) { + let id = ${scalarType}(global_invocation_id[0]); + + // Each invocation attempts to write an alternating (ping-pong) value, once per loop. + // The data value is initialized with the first of the two ping-pong values. + // Only one invocation per loop iteration should succeed. Note the workgroupBarrier() used + // to synchronize each invocation in the loop. + // The reason we alternate is in case atomicCompareExchangeWeak spurioulsy fails: + // If all invocations of one iteration spuriously fail, the very next iteration will also + // fail since the value will not have been exchanged; however, the subsequent one will succeed + // (assuming not all iterations spuriously fail yet again). + + for (var i = 0u; i < ${numWrites}u; i++) { + let compare = ping_pong_value(i); + let next = ping_pong_value(i + 1); + + let r = atomicCompareExchangeWeak(&data, compare, next); + + let slot = i * ${numInvocations}u + u32(id); + old_values[slot] = r.old_value; + if (r.exchanged) { + exchanged[slot] = 1; + } else { + exchanged[slot] = 0; + } + + workgroupBarrier(); + } + } + `; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + const defaultValue = 99999999; + + // Create single-value data buffer initialized to the first ping-pong value + const dataBuffer = t.device.createBuffer({ + size: 1 * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + { + const data = new arrayType(dataBuffer.getMappedRange()); + data[0] = pingPongValues[0]; + dataBuffer.unmap(); + } + t.trackForCleanup(dataBuffer); + + const oldValuesBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(oldValuesBuffer); + { + const data = new arrayType(oldValuesBuffer.getMappedRange()); + data.fill(defaultValue); + oldValuesBuffer.unmap(); + } + + const exchangedBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(exchangedBuffer); + { + const data = new arrayType(exchangedBuffer.getMappedRange()); + data.fill(defaultValue); + exchangedBuffer.unmap(); + } + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: dataBuffer } }, + { binding: 1, resource: { buffer: oldValuesBuffer } }, + { binding: 2, resource: { buffer: exchangedBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(1); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Read back buffers + const oldValuesBufferResult = ( + await t.readGPUBufferRangeTyped(oldValuesBuffer, { + type: arrayType, + typedLength: oldValuesBuffer.size / arrayType.BYTES_PER_ELEMENT, + }) + ).data; + const exchangedBufferResult = ( + await t.readGPUBufferRangeTyped(exchangedBuffer, { + type: arrayType, + typedLength: exchangedBuffer.size / arrayType.BYTES_PER_ELEMENT, + }) + ).data; + + for (let w = 0; w < numWrites; ++w) { + const offset = w * numInvocations; + const exchanged = exchangedBufferResult.subarray(offset, offset + numInvocations); + const oldValues = oldValuesBufferResult.subarray(offset, offset + numInvocations); + + const dumpValues = () => { + return ` + For write: ${w} + exchanged: ${exchanged} + oldValues: ${oldValues}`; + }; + + // Only one of the invocations should have succeeded to exchange - or none if spurious failures occured + const noExchanges = exchanged.every(v => v === 0); + if (noExchanges) { + // Spurious failure, all values in oldValues should be the default value + if (!oldValues.every(v => v === defaultValue)) { + t.fail( + `Spurious failure detected, expected only default value of ${defaultValue} in oldValues buffer.${dumpValues()}` + ); + + return; + } + } else { + // Only one invocation should have exchanged its value + if (exchanged.filter(v => v === 1).length !== 1) { + t.fail(`More than one invocation exchanged its value.${dumpValues()}`); + return; + } + + // Get its index + const idx = exchanged.findIndex(v => v === 1); + assert(idx !== -1); + + // Its output should contain the old value after exchange + const oldValue = pingPongValues[w % 2]; + if (oldValues[idx] !== oldValue) { + t.fail( + `oldValues[${idx}] expected to contain old value from exchange: ${oldValue}.${dumpValues()}'` + ); + + return; + } + + // The rest of oldValues should either contain the old value or the newly exchanged value, + // depending on whether they executed atomicCompareExchangWeak before or after invocation 'idx'. + const oldValuesRest = oldValues.filter((_, i) => i !== idx); + if (!oldValuesRest.every(v => pingPongValues.includes(v))) { + t.fail( + `Values in oldValues buffer should be one of '${pingPongValues}', except at index '${idx} where it is '${oldValue}'.${dumpValues()}` + ); + + return; + } + } + } + }); + +g.test('compare_exchange_weak_workgroup_advanced') + .specURL('https://www.w3.org/TR/WGSL/#atomic-rmw') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicCompareExchangeWeak(atomic_ptr: ptr, read_write>, cmp: T, v: T) -> __atomic_compare_exchange_result + +struct __atomic_compare_exchange_result { + old_value : T, // old value stored in the atomic + exchanged : bool, // true if the exchange was done +} +` + ) + .params(u => + u + .combine('workgroupSize', onlyWorkgroupSizes) // + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize; + const scalarType = t.params.scalarType; + + // Number of times each workgroup attempts to exchange the same value to the same memory address + const numWrites = 4; + + const bufferNumElements = numInvocations * numWrites; + const pingPongValues = [24, 68]; + + const wgsl = ` + var wg: atomic<${scalarType}>; + + @group(0) @binding(0) + var old_values : array<${scalarType}>; + + @group(0) @binding(1) + var exchanged : array<${scalarType}>; + + fn ping_pong_value(i: u32) -> ${scalarType} { + if (i % 2 == 0) { + return ${pingPongValues[0]}; + } else { + return ${pingPongValues[1]}; + } + } + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(local_invocation_index) local_invocation_index: u32, + @builtin(workgroup_id) workgroup_id : vec3 + ) { + let id = ${scalarType}(local_invocation_index); + + // Each invocation attempts to write an alternating (ping-pong) value, once per loop. + // The input value is initialized with the first of the two ping-pong values. + // Only one invocation per loop iteration should succeed. Note the workgroupBarrier() used + // to synchronize each invocation in the loop. + // The reason we alternate is in case atomicCompareExchangeWeak spurioulsy fails: + // If all invocations of one iteration spuriously fail, the very next iteration will also + // fail since the value will not have been exchanged; however, the subsequent one will succeed + // (assuming not all iterations spuriously fail yet again). + + // Initialize wg + if (local_invocation_index == 0) { + atomicStore(&wg, ${pingPongValues[0]}); + } + workgroupBarrier(); + + for (var i = 0u; i < ${numWrites}u; i++) { + let compare = ping_pong_value(i); + let next = ping_pong_value(i + 1); + + let r = atomicCompareExchangeWeak(&wg, compare, next); + + let slot = i * ${numInvocations}u + u32(id); + old_values[slot] = r.old_value; + if (r.exchanged) { + exchanged[slot] = 1; + } else { + exchanged[slot] = 0; + } + + workgroupBarrier(); + } + } + `; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + const defaultValue = 99999999; + + const oldValuesBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(oldValuesBuffer); + { + const data = new arrayType(oldValuesBuffer.getMappedRange()); + data.fill(defaultValue); + oldValuesBuffer.unmap(); + } + + const exchangedBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(exchangedBuffer); + { + const data = new arrayType(exchangedBuffer.getMappedRange()); + data.fill(defaultValue); + exchangedBuffer.unmap(); + } + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: oldValuesBuffer } }, + { binding: 1, resource: { buffer: exchangedBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(1); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Read back buffers + const oldValuesBufferResult = ( + await t.readGPUBufferRangeTyped(oldValuesBuffer, { + type: arrayType, + typedLength: oldValuesBuffer.size / arrayType.BYTES_PER_ELEMENT, + }) + ).data; + const exchangedBufferResult = ( + await t.readGPUBufferRangeTyped(exchangedBuffer, { + type: arrayType, + typedLength: exchangedBuffer.size / arrayType.BYTES_PER_ELEMENT, + }) + ).data; + + for (let w = 0; w < numWrites; ++w) { + const offset = w * numInvocations; + const exchanged = exchangedBufferResult.subarray(offset, offset + numInvocations); + const oldValues = oldValuesBufferResult.subarray(offset, offset + numInvocations); + + const dumpValues = () => { + return ` + For write: ${w} + exchanged: ${exchanged} + oldValues: ${oldValues}`; + }; + + // Only one of the invocations should have succeeded to exchange - or none if spurious failures occured + const noExchanges = exchanged.every(v => v === 0); + if (noExchanges) { + // Spurious failure, all values in oldValues should be the default value + if (!oldValues.every(v => v === defaultValue)) { + t.fail( + `Spurious failure detected, expected only default value of ${defaultValue} in oldValues buffer.${dumpValues()}` + ); + + return; + } + } else { + // Only one invocation should have exchanged its value + if (exchanged.filter(v => v === 1).length !== 1) { + t.fail(`More than one invocation exchanged its value.${dumpValues()}`); + return; + } + + // Get its index + const idx = exchanged.findIndex(v => v === 1); + assert(idx !== -1); + + // Its output should contain the old value after exchange + const oldValue = pingPongValues[w % 2]; + if (oldValues[idx] !== oldValue) { + t.fail( + `oldValues[${idx}] expected to contain old value from exchange: ${oldValue}.${dumpValues()}'` + ); + + return; + } + + // The rest of oldValues should either contain the old value or the newly exchanged value, + // depending on whether they executed atomicCompareExchangWeak before or after invocation 'idx'. + const oldValuesRest = oldValues.filter((_, i) => i !== idx); + if (!oldValuesRest.every(v => pingPongValues.includes(v))) { + t.fail( + `Values in oldValues buffer should be one of '${pingPongValues}', except at index '${idx} where it is '${oldValue}'.${dumpValues()}` + ); + + return; + } + } + } + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicExchange.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicExchange.spec.js index c1c34784897..34a9be654e8 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicExchange.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicExchange.spec.js @@ -4,11 +4,15 @@ Atomically stores the value v in the atomic object pointed to atomic_ptr and returns the original value stored in the atomic object. `; import { makeTestGroup } from '../../../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../../../common/util/data_tables.js'; import { GPUTest } from '../../../../../../gpu_test.js'; +import { checkElementsEqual } from '../../../../../../util/check_contents.js'; + +import { dispatchSizes, workgroupSizes, typedArrayCtor, kMapId } from './harness.js'; export const g = makeTestGroup(GPUTest); -g.test('exchange') +g.test('exchange_storage_basic') .specURL('https://www.w3.org/TR/WGSL/#atomic-rmw') .desc( ` @@ -18,5 +22,452 @@ T is i32 or u32 fn atomicExchange(atomic_ptr: ptr, read_write>, v: T) -> T ` ) - .params(u => u.combine('SC', ['storage', 'uniform']).combine('T', ['i32', 'u32'])) - .unimplemented(); + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(t => { + const numInvocations = t.params.workgroupSize * t.params.dispatchSize; + const bufferNumElements = numInvocations; + const scalarType = t.params.scalarType; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + @group(0) @binding(0) + var input : array>; + + @group(0) @binding(1) + var output : array<${scalarType}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(global_invocation_id) global_invocation_id : vec3, + ) { + let id = ${scalarType}(global_invocation_id[0]); + + output[id] = atomicExchange(&input[id], map_id(id * 2)); + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + // Create input buffer with values [0..n] + const inputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(inputBuffer); + const data = new arrayType(inputBuffer.getMappedRange()); + data.forEach((_, i) => (data[i] = i)); + inputBuffer.unmap(); + + const outputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: inputBuffer } }, + { binding: 1, resource: { buffer: outputBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(t.params.dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Output buffer should be the same as the initial input buffer as it contains + // values returned from atomicExchange + const outputExpected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); + outputExpected.forEach((_, i) => (outputExpected[i] = i)); + t.expectGPUBufferValuesEqual(outputBuffer, outputExpected); + + // And the input buffer should have been modified to a computed value + const inputExpected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); + inputExpected.forEach((_, i) => (inputExpected[i] = mapId.f(i * 2, numInvocations))); + t.expectGPUBufferValuesEqual(inputBuffer, inputExpected); + }); + +g.test('exchange_workgroup_basic') + .specURL('https://www.w3.org/TR/WGSL/#atomic-load') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicLoad(atomic_ptr: ptr, read_write>) -> T + +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(t => { + const numInvocations = t.params.workgroupSize; + const wgNumElements = numInvocations; + const scalarType = t.params.scalarType; + const dispatchSize = t.params.dispatchSize; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + var wg: array, ${wgNumElements}>; + + // Result of each workgroup is written to output[workgroup_id.x] + @group(0) @binding(0) + var output: array<${scalarType}, ${wgNumElements * dispatchSize}>; + + @group(0) @binding(1) + var wg_copy: array<${scalarType}, ${wgNumElements * dispatchSize}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(local_invocation_index) local_invocation_index: u32, + @builtin(workgroup_id) workgroup_id : vec3 + ) { + let id = ${scalarType}(local_invocation_index); + let global_id = ${scalarType}(workgroup_id.x * ${wgNumElements} + local_invocation_index); + + // Initialize wg[id] with this invocations global id + atomicStore(&wg[id], global_id); + workgroupBarrier(); + + // Test atomicExchange, storing old value into output + output[global_id] = atomicExchange(&wg[id], map_id(global_id * 2)); + + // Copy new value into wg_copy + wg_copy[global_id] = atomicLoad(&wg[id]); + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + const outputBuffer = t.device.createBuffer({ + size: wgNumElements * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const wgCopyBuffer = t.device.createBuffer({ + size: wgNumElements * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: outputBuffer } }, + { binding: 1, resource: { buffer: wgCopyBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Output buffer should be the same as the initial wg buffer as it contains + // values returned from atomicExchange + const outputExpected = new (typedArrayCtor(t.params.scalarType))(wgNumElements * dispatchSize); + outputExpected.forEach((_, i) => (outputExpected[i] = i)); + t.expectGPUBufferValuesEqual(outputBuffer, outputExpected); + + // And the wg copy buffer should have been modified to a computed value + const wgCopyBufferExpected = new (typedArrayCtor(t.params.scalarType))( + wgNumElements * dispatchSize + ); + + wgCopyBufferExpected.forEach( + (_, i) => (wgCopyBufferExpected[i] = mapId.f(i * 2, numInvocations)) + ); + + t.expectGPUBufferValuesEqual(wgCopyBuffer, wgCopyBufferExpected); + }); + +g.test('exchange_storage_advanced') + .specURL('https://www.w3.org/TR/WGSL/#atomic-rmw') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicExchange(atomic_ptr: ptr, read_write>, v: T) -> T +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize * t.params.dispatchSize; + const bufferNumElements = numInvocations; + const scalarType = t.params.scalarType; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + @group(0) @binding(0) + var input : atomic<${scalarType}>; + + @group(0) @binding(1) + var output : array<${scalarType}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(global_invocation_id) global_invocation_id : vec3, + ) { + let id = ${scalarType}(global_invocation_id[0]); + + // All invocations exchange with same single memory address, and we store + // the old value at the current invocation's location in the output buffer. + output[id] = atomicExchange(&input, map_id(id)); + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + // Create input buffer of size 1 with initial value 0 + const inputBuffer = t.device.createBuffer({ + size: 1 * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(inputBuffer); + + const outputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: inputBuffer } }, + { binding: 1, resource: { buffer: outputBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(t.params.dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Read back buffers + const inputBufferResult = await t.readGPUBufferRangeTyped(inputBuffer, { + type: arrayType, + typedLength: inputBuffer.size / arrayType.BYTES_PER_ELEMENT, + }); + const outputBufferResult = await t.readGPUBufferRangeTyped(outputBuffer, { + type: arrayType, + typedLength: outputBuffer.size / arrayType.BYTES_PER_ELEMENT, + }); + + // The one value in the input buffer plus all values in the output buffer + // should contain initial value 0 plus map_id(0..n), unsorted. + const values = new arrayType([...inputBufferResult.data, ...outputBufferResult.data]); + + const expected = new arrayType(values.length); + expected.forEach((_, i) => { + if (i === 0) { + expected[0] = 0; + } else { + expected[i] = mapId.f(i - 1, numInvocations); + } + }); + + // Sort both arrays and compare + values.sort(); + expected.sort(); // Sort because we store hashed results when mapId == 'remap' + t.expectOK(checkElementsEqual(values, expected)); + }); + +g.test('exchange_workgroup_advanced') + .specURL('https://www.w3.org/TR/WGSL/#atomic-load') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicLoad(atomic_ptr: ptr, read_write>) -> T + +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize; + const scalarType = t.params.scalarType; + const dispatchSize = t.params.dispatchSize; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + var wg: atomic<${scalarType}>; + + // Will contain the atomicExchange result for each invocation at global index + @group(0) @binding(0) + var output: array<${scalarType}, ${numInvocations * dispatchSize}>; + + // Will contain the final value in wg in wg_copy for this dispatch + @group(0) @binding(1) + var wg_copy: array<${scalarType}, ${dispatchSize}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(local_invocation_index) local_invocation_index: u32, + @builtin(workgroup_id) workgroup_id : vec3 + ) { + let id = ${scalarType}(local_invocation_index); + let global_id = ${scalarType}(workgroup_id.x * ${numInvocations} + local_invocation_index); + + // All invocations exchange with same single memory address, and we store + // the old value at the current invocation's location in the output buffer. + output[global_id] = atomicExchange(&wg, map_id(id)); + + // Once all invocations have completed, the first one copies the final exchanged value + // to wg_copy for this dispatch (workgroup_id.x) + workgroupBarrier(); + if (local_invocation_index == 0u) { + wg_copy[workgroup_id.x] = atomicLoad(&wg); + } + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + const outputBuffer = t.device.createBuffer({ + size: numInvocations * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const wgCopyBuffer = t.device.createBuffer({ + size: dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: outputBuffer } }, + { binding: 1, resource: { buffer: wgCopyBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Read back buffers + const outputBufferResult = await t.readGPUBufferRangeTyped(outputBuffer, { + type: arrayType, + typedLength: outputBuffer.size / arrayType.BYTES_PER_ELEMENT, + }); + const wgCopyBufferResult = await t.readGPUBufferRangeTyped(wgCopyBuffer, { + type: arrayType, + typedLength: wgCopyBuffer.size / arrayType.BYTES_PER_ELEMENT, + }); + + // For each dispatch, the one value in wgCopyBuffer plus all values in the output buffer + // should contain initial value 0 plus map_id(0..n), unsorted. + + // Expected values for each dispatch + const expected = new arrayType(numInvocations + 1); + expected.forEach((_, i) => { + if (i === 0) { + expected[0] = 0; + } else { + expected[i] = mapId.f(i - 1, numInvocations); + } + }); + expected.sort(); // Sort because we store hashed results when mapId == 'remap' + + // Test values for each dispatch + for (let d = 0; d < dispatchSize; ++d) { + // Get values for this dispatch + const dispatchOffset = d * numInvocations; + const values = new arrayType([ + wgCopyBufferResult.data[d], // Last 'wg' value for this dispatch + ...outputBufferResult.data.subarray(dispatchOffset, dispatchOffset + numInvocations), // Rest of the returned values + ]); + + values.sort(); + t.expectOK(checkElementsEqual(values, expected)); + } + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicLoad.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicLoad.spec.js index d2268ad057f..1bcc8bc5601 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicLoad.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicLoad.spec.js @@ -4,11 +4,14 @@ Returns the atomically loaded the value pointed to by atomic_ptr. It does not modify the object. `; import { makeTestGroup } from '../../../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../../../common/util/data_tables.js'; import { GPUTest } from '../../../../../../gpu_test.js'; +import { dispatchSizes, workgroupSizes, typedArrayCtor, kMapId } from './harness.js'; + export const g = makeTestGroup(GPUTest); -g.test('load') +g.test('load_storage') .specURL('https://www.w3.org/TR/WGSL/#atomic-load') .desc( ` @@ -19,5 +22,173 @@ fn atomicLoad(atomic_ptr: ptr, read_write>) -> T ` ) - .params(u => u.combine('SC', ['storage', 'uniform']).combine('T', ['i32', 'u32'])) - .unimplemented(); + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(t => { + const numInvocations = t.params.workgroupSize * t.params.dispatchSize; + const bufferNumElements = numInvocations; + const scalarType = t.params.scalarType; + const mapId = kMapId[t.params.mapId]; + + const wgsl = ` + @group(0) @binding(0) + var input : array>; + + @group(0) @binding(1) + var output : array<${scalarType}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(global_invocation_id) global_invocation_id : vec3, + ) { + let id = ${scalarType}(global_invocation_id[0]); + output[id] = atomicLoad(&input[id]); + } + `; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + // Create input buffer with values [map_id(0)..map_id(n)] + const inputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + mappedAtCreation: true, + }); + t.trackForCleanup(inputBuffer); + const data = new arrayType(inputBuffer.getMappedRange()); + data.forEach((_, i) => (data[i] = mapId.f(i, numInvocations))); + inputBuffer.unmap(); + + const outputBuffer = t.device.createBuffer({ + size: bufferNumElements * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { binding: 0, resource: { buffer: inputBuffer } }, + { binding: 1, resource: { buffer: outputBuffer } }, + ], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(t.params.dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Both input and output buffer should be the same now + const expected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); + expected.forEach((_, i) => (expected[i] = mapId.f(i, numInvocations))); + t.expectGPUBufferValuesEqual(inputBuffer, expected); + t.expectGPUBufferValuesEqual(outputBuffer, expected); + }); + +g.test('load_workgroup') + .specURL('https://www.w3.org/TR/WGSL/#atomic-load') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicLoad(atomic_ptr: ptr, read_write>) -> T + +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(t => { + const numInvocations = t.params.workgroupSize; + const wgNumElements = numInvocations; + const scalarType = t.params.scalarType; + const dispatchSize = t.params.dispatchSize; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + var wg: array, ${wgNumElements}>; + + // Result of each workgroup is written to output[workgroup_id.x] + @group(0) @binding(0) + var output: array<${scalarType}, ${wgNumElements * dispatchSize}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(local_invocation_index) local_invocation_index: u32, + @builtin(workgroup_id) workgroup_id : vec3 + ) { + let id = ${scalarType}(local_invocation_index); + let global_id = ${scalarType}(workgroup_id.x * ${wgNumElements} + local_invocation_index); + + // Initialize wg[id] with this invocations global id (mapped) + atomicStore(&wg[id], map_id(global_id)); + workgroupBarrier(); + + // Test atomic loading of value at wg[id] and store result in output[global_id] + output[global_id] = atomicLoad(&wg[id]); + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + const outputBuffer = t.device.createBuffer({ + size: wgNumElements * dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [{ binding: 0, resource: { buffer: outputBuffer } }], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Expected values should be map_id(0..n) + const expected = new (typedArrayCtor(t.params.scalarType))( + wgNumElements * t.params.dispatchSize + ); + + expected.forEach((_, i) => (expected[i] = mapId.f(i, numInvocations))); + + t.expectGPUBufferValuesEqual(outputBuffer, expected); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMax.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMax.spec.js index 952001610bf..74213806fc0 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMax.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMax.spec.js @@ -36,7 +36,7 @@ fn atomicMax(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize * t.params.dispatchSize; @@ -45,7 +45,7 @@ fn atomicMax(atomic_ptr: ptr, read_write>, v: T) -> T const initValue = 0; const op = `atomicMax(&output[0], id)`; - const expected = new (typedArrayCtor(t.params.scalarKind))(bufferNumElements); + const expected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); expected[0] = numInvocations - 1; runStorageVariableTest({ @@ -73,7 +73,7 @@ fn atomicMax(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { // Allocate one extra element to ensure it doesn't get modified @@ -82,7 +82,7 @@ fn atomicMax(atomic_ptr: ptr, read_write>, v: T) -> T const initValue = 0; const op = `atomicMax(&wg[0], id)`; - const expected = new (typedArrayCtor(t.params.scalarKind))( + const expected = new (typedArrayCtor(t.params.scalarType))( wgNumElements * t.params.dispatchSize ).fill(initValue); for (let d = 0; d < t.params.dispatchSize; ++d) { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMin.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMin.spec.js index cc5928f31b3..9f898123ae7 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMin.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicMin.spec.js @@ -36,15 +36,15 @@ fn atomicMin(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { // Allocate one extra element to ensure it doesn't get modified const bufferNumElements = 2; - const initValue = t.params.scalarKind === 'u32' ? 0xffffffff : 0x7fffffff; + const initValue = t.params.scalarType === 'u32' ? 0xffffffff : 0x7fffffff; const op = `atomicMin(&output[0], id)`; - const expected = new (typedArrayCtor(t.params.scalarKind))(bufferNumElements).fill(initValue); + const expected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements).fill(initValue); expected[0] = 0; runStorageVariableTest({ @@ -72,16 +72,16 @@ fn atomicMin(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { // Allocate one extra element to ensure it doesn't get modified const wgNumElements = 2; - const initValue = t.params.scalarKind === 'u32' ? 0xffffffff : 0x7fffffff; + const initValue = t.params.scalarType === 'u32' ? 0xffffffff : 0x7fffffff; const op = `atomicMin(&wg[0], id)`; - const expected = new (typedArrayCtor(t.params.scalarKind))( + const expected = new (typedArrayCtor(t.params.scalarType))( wgNumElements * t.params.dispatchSize ).fill(initValue); for (let d = 0; d < t.params.dispatchSize; ++d) { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicOr.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicOr.spec.js index f42e61ba9ea..f707d23b9bf 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicOr.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicOr.spec.js @@ -39,7 +39,7 @@ fn atomicOr(atomic_ptr: ptr, read_write>, v: T) -> T .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) .combine('mapId', keysOf(kMapId)) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize * t.params.dispatchSize; @@ -51,14 +51,14 @@ fn atomicOr(atomic_ptr: ptr, read_write>, v: T) -> T // Note: Both WGSL and JS will shift left 1 by id modulo 32. const initValue = 0; - const scalarKind = t.params.scalarKind; + const scalarType = t.params.scalarType; const mapId = kMapId[t.params.mapId]; const extra = mapId.wgsl(numInvocations); // Defines map_id() const op = ` let i = map_id(u32(id)); - atomicOr(&output[i / 32], ${scalarKind}(1) << i) + atomicOr(&output[i / 32], ${scalarType}(1) << i) `; - const expected = new (typedArrayCtor(scalarKind))(bufferNumElements); + const expected = new (typedArrayCtor(scalarType))(bufferNumElements); for (let id = 0; id < numInvocations; ++id) { const i = mapId.f(id, numInvocations); expected[Math.floor(i / 32)] |= 1 << i; @@ -91,7 +91,7 @@ fn atomicOr(atomic_ptr: ptr, read_write>, v: T) -> T .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) .combine('mapId', keysOf(kMapId)) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize; @@ -103,14 +103,14 @@ fn atomicOr(atomic_ptr: ptr, read_write>, v: T) -> T // Note: Both WGSL and JS will shift left 1 by id modulo 32. const initValue = 0; - const scalarKind = t.params.scalarKind; + const scalarType = t.params.scalarType; const mapId = kMapId[t.params.mapId]; const extra = mapId.wgsl(numInvocations); // Defines map_id() const op = ` let i = map_id(u32(id)); - atomicOr(&wg[i / 32], ${scalarKind}(1) << i) + atomicOr(&wg[i / 32], ${scalarType}(1) << i) `; - const expected = new (typedArrayCtor(scalarKind))(wgNumElements * t.params.dispatchSize); + const expected = new (typedArrayCtor(scalarType))(wgNumElements * t.params.dispatchSize); for (let d = 0; d < t.params.dispatchSize; ++d) { for (let id = 0; id < numInvocations; ++id) { const wg = expected.subarray(d * wgNumElements); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicStore.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicStore.spec.js index e0edaf81b89..0958a35ef94 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicStore.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicStore.spec.js @@ -4,11 +4,21 @@ Atomically stores the value v in the atomic object pointed to by atomic_ptr. `; import { makeTestGroup } from '../../../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../../../common/util/data_tables.js'; import { GPUTest } from '../../../../../../gpu_test.js'; +import { + dispatchSizes, + workgroupSizes, + runStorageVariableTest, + runWorkgroupVariableTest, + typedArrayCtor, + kMapId, +} from './harness.js'; + export const g = makeTestGroup(GPUTest); -g.test('store') +g.test('store_storage_basic') .specURL('https://www.w3.org/TR/WGSL/#atomic-store') .desc( ` @@ -18,5 +28,276 @@ T is i32 or u32 fn atomicStore(atomic_ptr: ptr, read_write>, v: T) ` ) - .params(u => u.combine('SC', ['storage', 'uniform']).combine('T', ['i32', 'u32'])) - .unimplemented(); + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(t => { + const numInvocations = t.params.workgroupSize * t.params.dispatchSize; + const bufferNumElements = numInvocations; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const initValue = 0; + const op = `atomicStore(&output[id], map_id(id))`; + const expected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); + expected.forEach((_, i) => (expected[i] = mapId.f(i, numInvocations))); + + runStorageVariableTest({ + t, + workgroupSize: t.params.workgroupSize, + dispatchSize: t.params.dispatchSize, + bufferNumElements, + initValue, + op, + expected, + extra, + }); + }); + +g.test('store_workgroup_basic') + .specURL('https://www.w3.org/TR/WGSL/#atomic-store') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicStore(atomic_ptr: ptr, read_write>, v: T) +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(t => { + const numInvocations = t.params.workgroupSize; + const wgNumElements = numInvocations; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const initValue = 0; + const op = `atomicStore(&wg[id], map_id(global_id))`; + const expected = new (typedArrayCtor(t.params.scalarType))( + wgNumElements * t.params.dispatchSize + ); + + expected.forEach((_, i) => (expected[i] = mapId.f(i, numInvocations))); + + runWorkgroupVariableTest({ + t, + workgroupSize: t.params.workgroupSize, + dispatchSize: t.params.dispatchSize, + wgNumElements, + initValue, + op, + expected, + extra, + }); + }); + +g.test('store_storage_advanced') + .specURL('https://www.w3.org/TR/WGSL/#atomic-store') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicStore(atomic_ptr: ptr, read_write>, v: T) + +Tests that multiple invocations of atomicStore to the same location returns +one of the values written. +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize * t.params.dispatchSize; + const scalarType = t.params.scalarType; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + @group(0) @binding(0) + var output : array>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(global_invocation_id) global_invocation_id : vec3, + ) { + let id = ${scalarType}(global_invocation_id[0]); + + // All invocations store to the same location + atomicStore(&output[0], map_id(id)); + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + // Output buffer has only 1 element + const outputBuffer = t.device.createBuffer({ + size: 1 * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [{ binding: 0, resource: { buffer: outputBuffer } }], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(t.params.dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Read back the buffer + const outputBufferResult = ( + await t.readGPUBufferRangeTyped(outputBuffer, { + type: arrayType, + typedLength: outputBuffer.size / arrayType.BYTES_PER_ELEMENT, + }) + ).data; + + // All invocations wrote to the output[0], so validate that it contains one + // of the possible computed values. + const expected_one_of = new arrayType(numInvocations); + expected_one_of.forEach((_, i) => (expected_one_of[i] = mapId.f(i, numInvocations))); + + if (!expected_one_of.includes(outputBufferResult[0])) { + t.fail( + `Unexpected value in output[0]: '${outputBufferResult[0]}, expected value to be one of: ${expected_one_of}` + ); + } + }); + +g.test('store_workgroup_advanced') + .specURL('https://www.w3.org/TR/WGSL/#atomic-store') + .desc( + ` +AS is storage or workgroup +T is i32 or u32 + +fn atomicStore(atomic_ptr: ptr, read_write>, v: T) + +Tests that multiple invocations of atomicStore to the same location returns +one of the values written. +` + ) + .params(u => + u + .combine('workgroupSize', workgroupSizes) + .combine('dispatchSize', dispatchSizes) + .combine('mapId', keysOf(kMapId)) + .combine('scalarType', ['u32', 'i32']) + ) + .fn(async t => { + const numInvocations = t.params.workgroupSize; + const scalarType = t.params.scalarType; + const dispatchSize = t.params.dispatchSize; + const mapId = kMapId[t.params.mapId]; + const extra = mapId.wgsl(numInvocations, t.params.scalarType); // Defines map_id() + + const wgsl = + ` + var wg: atomic<${scalarType}>; + + // Result of each workgroup is written to output[workgroup_id.x] + @group(0) @binding(0) + var output: array<${scalarType}, ${dispatchSize}>; + + @compute @workgroup_size(${t.params.workgroupSize}) + fn main( + @builtin(local_invocation_index) local_invocation_index: u32, + @builtin(workgroup_id) workgroup_id : vec3 + ) { + let id = ${scalarType}(local_invocation_index); + + // All invocations of a given dispatch store to the same location. + // In the end, the final value should be randomly equal to one of the ids. + atomicStore(&wg, map_id(id)); + + // Once all invocations have completed, the first one copies the result + // to output for this dispatch (workgroup_id.x) + workgroupBarrier(); + if (local_invocation_index == 0u) { + output[workgroup_id.x] = atomicLoad(&wg); + } + } + ` + extra; + + const pipeline = t.device.createComputePipeline({ + layout: 'auto', + compute: { + module: t.device.createShaderModule({ code: wgsl }), + entryPoint: 'main', + }, + }); + + const arrayType = typedArrayCtor(scalarType); + + const outputBuffer = t.device.createBuffer({ + size: dispatchSize * arrayType.BYTES_PER_ELEMENT, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC, + }); + t.trackForCleanup(outputBuffer); + + const bindGroup = t.device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [{ binding: 0, resource: { buffer: outputBuffer } }], + }); + + // Run the shader. + const encoder = t.device.createCommandEncoder(); + const pass = encoder.beginComputePass(); + pass.setPipeline(pipeline); + pass.setBindGroup(0, bindGroup); + pass.dispatchWorkgroups(dispatchSize); + pass.end(); + t.queue.submit([encoder.finish()]); + + // Read back the buffer + const outputBufferResult = ( + await t.readGPUBufferRangeTyped(outputBuffer, { + type: arrayType, + typedLength: outputBuffer.size / arrayType.BYTES_PER_ELEMENT, + }) + ).data; + + // Each dispatch wrote to a single atomic workgroup var that was copied + // to outputBuffer[dispatch]. Validate that each value in the output buffer + // is one of the possible computed values. + const expected_one_of = new arrayType(numInvocations); + expected_one_of.forEach((_, i) => (expected_one_of[i] = mapId.f(i, numInvocations))); + + for (let d = 0; d < dispatchSize; d++) { + if (!expected_one_of.includes(outputBufferResult[d])) { + t.fail( + `Unexpected value in output[d] for dispatch d '${d}': '${outputBufferResult[d]}', expected value to be one of: ${expected_one_of}` + ); + } + } + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicSub.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicSub.spec.js index ed55959e8e6..20847e48d12 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicSub.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicSub.spec.js @@ -36,7 +36,7 @@ fn atomicSub(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize * t.params.dispatchSize; @@ -45,7 +45,7 @@ fn atomicSub(atomic_ptr: ptr, read_write>, v: T) -> T const initValue = 0; const op = `atomicSub(&output[0], 1)`; - const expected = new (typedArrayCtor(t.params.scalarKind))(bufferNumElements); + const expected = new (typedArrayCtor(t.params.scalarType))(bufferNumElements); expected[0] = -1 * numInvocations; runStorageVariableTest({ @@ -73,7 +73,7 @@ fn atomicSub(atomic_ptr: ptr, read_write>, v: T) -> T u .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { // Allocate one extra element to ensure it doesn't get modified @@ -82,7 +82,7 @@ fn atomicSub(atomic_ptr: ptr, read_write>, v: T) -> T const initValue = 0; const op = `atomicSub(&wg[0], 1)`; - const expected = new (typedArrayCtor(t.params.scalarKind))( + const expected = new (typedArrayCtor(t.params.scalarType))( wgNumElements * t.params.dispatchSize ); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicXor.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicXor.spec.js index f82efdd6d31..7ecb7586e90 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicXor.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/atomicXor.spec.js @@ -39,7 +39,7 @@ fn atomicXor(atomic_ptr: ptr, read_write>, v: T) -> T .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) .combine('mapId', keysOf(kMapId)) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize * t.params.dispatchSize; @@ -51,15 +51,15 @@ fn atomicXor(atomic_ptr: ptr, read_write>, v: T) -> T // Note: Both WGSL and JS will shift left 1 by id modulo 32. const initValue = 0b11000011010110100000111100111100; - const scalarKind = t.params.scalarKind; + const scalarType = t.params.scalarType; const mapId = kMapId[t.params.mapId]; const extra = mapId.wgsl(numInvocations); // Defines map_id() const op = ` let i = map_id(u32(id)); - atomicXor(&output[i / 32], ${scalarKind}(1) << i) + atomicXor(&output[i / 32], ${scalarType}(1) << i) `; - const expected = new (typedArrayCtor(scalarKind))(bufferNumElements).fill(initValue); + const expected = new (typedArrayCtor(scalarType))(bufferNumElements).fill(initValue); for (let id = 0; id < numInvocations; ++id) { const i = mapId.f(id, numInvocations); expected[Math.floor(i / 32)] ^= 1 << i; @@ -92,7 +92,7 @@ fn atomicXor(atomic_ptr: ptr, read_write>, v: T) -> T .combine('workgroupSize', workgroupSizes) .combine('dispatchSize', dispatchSizes) .combine('mapId', keysOf(kMapId)) - .combine('scalarKind', ['u32', 'i32']) + .combine('scalarType', ['u32', 'i32']) ) .fn(t => { const numInvocations = t.params.workgroupSize; @@ -104,15 +104,15 @@ fn atomicXor(atomic_ptr: ptr, read_write>, v: T) -> T // Note: Both WGSL and JS will shift left 1 by id modulo 32. const initValue = 0b11000011010110100000111100111100; - const scalarKind = t.params.scalarKind; + const scalarType = t.params.scalarType; const mapId = kMapId[t.params.mapId]; const extra = mapId.wgsl(numInvocations); // Defines map_id() const op = ` let i = map_id(u32(id)); - atomicXor(&wg[i / 32], ${scalarKind}(1) << i) + atomicXor(&wg[i / 32], ${scalarType}(1) << i) `; - const expected = new (typedArrayCtor(scalarKind))(wgNumElements * t.params.dispatchSize).fill( + const expected = new (typedArrayCtor(scalarType))(wgNumElements * t.params.dispatchSize).fill( initValue ); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/harness.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/harness.js index 3704be75b7e..f5f7d83fcf6 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/harness.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomics/harness.js @@ -2,17 +2,23 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { assert } from '../../../../../../../common/util/util.js'; +// Use these in combination. export const workgroupSizes = [1, 2, 32, 64]; export const dispatchSizes = [1, 4, 8, 16]; + +// Use this alone - dispatch size should be 1. +export const onlyWorkgroupSizes = [1, 2, 4, 8, 16, 32, 64, 128, 256]; + export const kMapId = { passthrough: { f: (id, max) => id, - wgsl: max => 'fn map_id(id: u32) -> u32 { return id; }', + wgsl: (max, scalarType = 'u32') => + `fn map_id(id: ${scalarType}) -> ${scalarType} { return id; }`, }, remap: { f: (id, max) => (((id >>> 0) * 14957) ^ (((id >>> 0) * 26561) >> 2)) % max, - wgsl: max => - `fn map_id(id: u32) -> u32 { return ((id * 14957) ^ ((id * 26561) >> 2)) % ${max}; }`, + wgsl: (max, scalarType = 'u32') => + `fn map_id(id: ${scalarType}) -> ${scalarType} { return ((id * 14957) ^ ((id * 26561) >> 2)) % ${max}; }`, }, }; @@ -34,7 +40,9 @@ export function runStorageVariableTest({ dispatchSize, // Dispatch X-size bufferNumElements, // Number of 32-bit elements in output buffer initValue, // 32-bit initial value used to fill output buffer - op, // Atomic op source executed by the compute shader, NOTE: 'id' is global_invocation_id.x + // Atomic op source executed by the compute shader, NOTE: 'id' is global_invocation_id.x, + // and `output` is a storage array of atomics. + op, expected, // Expected values array to compare against output buffer extra, // Optional extra WGSL source }) { @@ -45,7 +53,7 @@ export function runStorageVariableTest({ const wgsl = ` @group(0) @binding(0) - var output: array>; + var output : array>; @compute @workgroup_size(${workgroupSize}) fn main( @@ -99,7 +107,11 @@ export function runWorkgroupVariableTest({ dispatchSize, // Dispatch X-size wgNumElements, // Number of 32-bit elements in 'wg' array. Output buffer is sized to wgNumElements * dispatchSize. initValue, // 32-bit initial value used to fill 'wg' array - op, // Atomic op source executed by the compute shader, NOTE: 'id' is local_invocation_index + // Atomic op source executed by the compute shader, NOTE: 'id' is local_invocation_index, + // `wg` is a workgroup array of atomics of size `workgroupSize`, `output` is a storage array of non-atomics of size + // `workgroupSize * dispatcSize` to which each dispatch of `wg` gets copied to (dispatch 0 to first workgroupSize elements, + // dispatch 1 to second workgroupSize elements, etc.). + op, expected, // Expected values array to compare against output buffer extra, // Optional extra WGSL source }) { @@ -121,6 +133,7 @@ export function runWorkgroupVariableTest({ @builtin(workgroup_id) workgroup_id : vec3 ) { let id = ${scalarType}(local_invocation_index); + let global_id = ${scalarType}(workgroup_id.x * ${wgNumElements} + local_invocation_index); // Initialize workgroup array if (local_invocation_index == 0) { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/bitcast.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/bitcast.spec.js index 313a9f42a07..0165d0121e3 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/bitcast.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/bitcast.spec.js @@ -20,75 +20,264 @@ Reinterpretation of bits. Beware non-normal f32 values. T is i32, u32, f32 `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { assert } from '../../../../../../common/util/util.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { alwaysPass, anyOf } from '../../../../../util/compare.js'; -import { kBit } from '../../../../../util/constants.js'; +import { kBit, kValue } from '../../../../../util/constants.js'; import { + reinterpretI32AsF32, + reinterpretI32AsU32, reinterpretF32AsI32, reinterpretF32AsU32, reinterpretU32AsF32, reinterpretU32AsI32, + reinterpretU16AsF16, + reinterpretF16AsU16, f32, i32, u32, + f16, TypeF32, TypeI32, TypeU32, + TypeF16, + TypeVec, + Vector, + toVector, } from '../../../../../util/conversion.js'; +import { FPInterval, FP } from '../../../../../util/floating_point.js'; import { fullF32Range, fullI32Range, fullU32Range, + fullF16Range, linearRange, isSubnormalNumberF32, + isSubnormalNumberF16, + cartesianProduct, + isFiniteF32, + isFiniteF16, } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { builtinWithPredeclaration } from './builtin.js'; export const g = makeTestGroup(GPUTest); -const f32Range = [ - ...fullF32Range(), - ...[kBit.f32.positive.zero, kBit.f32.negative.zero].map(u => reinterpretU32AsF32(u)), -]; - const numNaNs = 11; -const f32RangeWithInfAndNaN = [ - ...f32Range, - ...[ - // Cover NaNs evenly in integer space. - // The positive NaN with the lowest integer representation is the integer - // for infinity, plus one. - // The positive NaN with the highest integer representation is i32.max (!) - ...linearRange(kBit.f32.infinity.positive + 1, kBit.i32.positive.max, numNaNs), - // The negative NaN with the lowest integer representation is the integer - // for negative infinity, plus one. - // The negative NaN with the highest integer representation is u32.max (!) - ...linearRange(kBit.f32.infinity.negative + 1, kBit.u32.max, numNaNs), - kBit.f32.infinity.positive, - kBit.f32.infinity.negative, - ].map(u => reinterpretU32AsF32(u)), +const f32InfAndNaNInU32 = [ + // Cover NaNs evenly in integer space. + // The positive NaN with the lowest integer representation is the integer + // for infinity, plus one. + // The positive NaN with the highest integer representation is i32.max (!) + ...linearRange(kBit.f32.positive.infinity + 1, kBit.i32.positive.max, numNaNs), + // The negative NaN with the lowest integer representation is the integer + // for negative infinity, plus one. + // The negative NaN with the highest integer representation is u32.max (!) + ...linearRange(kBit.f32.negative.infinity + 1, kBit.u32.max, numNaNs), + kBit.f32.positive.infinity, + kBit.f32.negative.infinity, ]; -const anyF32 = alwaysPass('any f32'); -const anyI32 = alwaysPass('any i32'); -const anyU32 = alwaysPass('any u32'); +const f32InfAndNaNInF32 = f32InfAndNaNInU32.map(u => reinterpretU32AsF32(u)); +const f32InfAndNaNInI32 = f32InfAndNaNInU32.map(u => reinterpretU32AsI32(u)); const f32ZerosInU32 = [0, kBit.f32.negative.zero]; const f32ZerosInF32 = f32ZerosInU32.map(u => reinterpretU32AsF32(u)); const f32ZerosInI32 = f32ZerosInU32.map(u => reinterpretU32AsI32(u)); -function isFinite(f) { - return !(Number.isNaN(f) || f === Number.POSITIVE_INFINITY || f === Number.NEGATIVE_INFINITY); +const f32ZerosInterval = new FPInterval('f32', -0.0, 0.0); + +// f32FiniteRange is a list of finite f32s. fullF32Range() already +// has +0, we only need to add -0. +const f32FiniteRange = [...fullF32Range(), kValue.f32.negative.zero]; +const f32RangeWithInfAndNaN = [...f32FiniteRange, ...f32InfAndNaNInF32]; + +// F16 values, finite, Inf/NaN, and zeros. Represented in float and u16. +const f16FiniteInF16 = [...fullF16Range(), kValue.f16.negative.zero]; +const f16FiniteInU16 = f16FiniteInF16.map(u => reinterpretF16AsU16(u)); + +const f16InfAndNaNInU16 = [ + // Cover NaNs evenly in integer space. + // The positive NaN with the lowest integer representation is the integer + // for infinity, plus one. + // The positive NaN with the highest integer representation is u16 0x7fff i.e. 32767. + ...linearRange(kBit.f16.positive.infinity + 1, 32767, numNaNs).map(v => Math.ceil(v)), + // The negative NaN with the lowest integer representation is the integer + // for negative infinity, plus one. + // The negative NaN with the highest integer representation is u16 0xffff i.e. 65535 + ...linearRange(kBit.f16.negative.infinity + 1, 65535, numNaNs).map(v => Math.floor(v)), + kBit.f16.positive.infinity, + kBit.f16.negative.infinity, +]; + +const f16InfAndNaNInF16 = f16InfAndNaNInU16.map(u => reinterpretU16AsF16(u)); + +const f16ZerosInU16 = [kBit.f16.negative.zero, 0]; + +// f16 interval that match +/-0.0. +const f16ZerosInterval = new FPInterval('f16', -0.0, 0.0); + +/** + * @returns an u32 whose lower and higher 16bits are the two elements of the + * given array of two u16 respectively, in little-endian. + */ +function u16x2ToU32(u16x2) { + assert(u16x2.length === 2); + // Create a DataView with 4 bytes buffer. + const buffer = new ArrayBuffer(4); + const view = new DataView(buffer); + // Enforce little-endian. + view.setUint16(0, u16x2[0], true); + view.setUint16(2, u16x2[1], true); + return view.getUint32(0, true); } +/** + * @returns an array of two u16, respectively the lower and higher 16bits of + * given u32 in little-endian. + */ +function u32ToU16x2(u32) { + // Create a DataView with 4 bytes buffer. + const buffer = new ArrayBuffer(4); + const view = new DataView(buffer); + // Enforce little-endian. + view.setUint32(0, u32, true); + return [view.getUint16(0, true), view.getUint16(2, true)]; +} + +/** + * @returns a vec2 from an array of two u16, each reinterpreted as f16. + */ +function u16x2ToVec2F16(u16x2) { + assert(u16x2.length === 2); + return toVector(u16x2.map(reinterpretU16AsF16), f16); +} + +/** + * @returns a vec4 from an array of four u16, each reinterpreted as f16. + */ +function u16x4ToVec4F16(u16x4) { + assert(u16x4.length === 4); + return toVector(u16x4.map(reinterpretU16AsF16), f16); +} + +/** + * @returns true if and only if a given u32 can bitcast to a vec2 with all elements + * being finite f16 values. + */ +function canU32BitcastToFiniteVec2F16(u32) { + return u32ToU16x2(u32) + .map(u16 => isFiniteF16(reinterpretU16AsF16(u16))) + .reduce((a, b) => a && b, true); +} + +/** + * @returns an array of N elements with the i-th element being an array of len elements + * [a_i, a_((i+1)%N), ..., a_((i+len-1)%N)], for the input array of N element [a_1, ... a_N] + * and the given len. For example, slidingSlice([1, 2, 3], 2) result in + * [[1, 2], [2, 3], [3, 1]]. + * This helper function is used for generating vector cases from scalar values array. + */ +function slidingSlice(input, len) { + const result = []; + for (let i = 0; i < input.length; i++) { + const sub = []; + for (let j = 0; j < len; j++) { + sub.push(input[(i + j) % input.length]); + } + result.push(sub); + } + return result; +} + +// vec2 interesting (zeros, Inf, and NaN) values for testing cases. +// vec2 values that has at least one Inf/NaN f16 element, reinterpreted as u32/i32. +const f16Vec2InfAndNaNInU32 = [ + ...cartesianProduct(f16InfAndNaNInU16, [...f16InfAndNaNInU16, ...f16FiniteInU16]), + ...cartesianProduct(f16FiniteInU16, f16InfAndNaNInU16), +].map(u16x2ToU32); +const f16Vec2InfAndNaNInI32 = f16Vec2InfAndNaNInU32.map(u => reinterpretU32AsI32(u)); +// vec2 values with two f16 0.0 element, reinterpreted as u32/i32. +const f16Vec2ZerosInU32 = cartesianProduct(f16ZerosInU16, f16ZerosInU16).map(u16x2ToU32); +const f16Vec2ZerosInI32 = f16Vec2ZerosInU32.map(u => reinterpretU32AsI32(u)); + +// i32/u32/f32 range for bitcasting to vec2 +// u32 values for bitcasting to vec2 finite, Inf, and NaN. +const u32RangeForF16Vec2FiniteInfNaN = [ + ...fullU32Range(), + ...f16Vec2ZerosInU32, + ...f16Vec2InfAndNaNInU32, +]; + +// u32 values for bitcasting to finite only vec2, used for constant evaluation. +const u32RangeForF16Vec2Finite = u32RangeForF16Vec2FiniteInfNaN.filter( + canU32BitcastToFiniteVec2F16 +); + +// i32 values for bitcasting to vec2 finite, zeros, Inf, and NaN. +const i32RangeForF16Vec2FiniteInfNaN = [ + ...fullI32Range(), + ...f16Vec2ZerosInI32, + ...f16Vec2InfAndNaNInI32, +]; + +// i32 values for bitcasting to finite only vec2, used for constant evaluation. +const i32RangeForF16Vec2Finite = i32RangeForF16Vec2FiniteInfNaN.filter(u => + canU32BitcastToFiniteVec2F16(reinterpretI32AsU32(u)) +); + +// f32 values with finite/Inf/NaN f32, for bitcasting to vec2 finite, zeros, Inf, and NaN. +const f32RangeWithInfAndNaNForF16Vec2FiniteInfNaN = [ + ...f32RangeWithInfAndNaN, + ...u32RangeForF16Vec2FiniteInfNaN.map(reinterpretU32AsF32), +]; + +// Finite f32 values for bitcasting to finite only vec2, used for constant evaluation. +const f32FiniteRangeForF16Vec2Finite = f32RangeWithInfAndNaNForF16Vec2FiniteInfNaN + .filter(isFiniteF32) + .filter(u => canU32BitcastToFiniteVec2F16(reinterpretF32AsU32(u))); + +// vec2 cases for bitcasting to i32/u32/f32, by combining f16 values into pairs +const f16Vec2FiniteInU16x2 = slidingSlice(f16FiniteInU16, 2); +const f16Vec2FiniteInfNanInU16x2 = slidingSlice([...f16FiniteInU16, ...f16InfAndNaNInU16], 2); +// vec4 cases for bitcasting to vec2, by combining f16 values 4-by-4 +const f16Vec2FiniteInU16x4 = slidingSlice(f16FiniteInU16, 4); +const f16Vec2FiniteInfNanInU16x4 = slidingSlice([...f16FiniteInU16, ...f16InfAndNaNInU16], 4); + +// alwaysPass comparator for i32/u32/f32 cases. For f32/f16 we also use unbound interval, which +// allow per-element unbounded expectation for vector. +const anyF32 = alwaysPass('any f32'); +const anyI32 = alwaysPass('any i32'); +const anyU32 = alwaysPass('any u32'); + +// Unbounded FPInterval +const f32UnboundedInterval = FP.f32.constants().unboundedInterval; +const f16UnboundedInterval = FP.f16.constants().unboundedInterval; + +// i32 and u32 cases for bitcasting to f32. +// i32 cases for bitcasting to f32 finite, zeros, Inf, and NaN. +const i32RangeForF32FiniteInfNaN = [...fullI32Range(), ...f32ZerosInI32, ...f32InfAndNaNInI32]; + +// i32 cases for bitcasting to f32 finite only. +const i32RangeForF32Finite = i32RangeForF32FiniteInfNaN.filter(i => + isFiniteF32(reinterpretI32AsF32(i)) +); + +// u32 cases for bitcasting to f32 finite, zeros, Inf, and NaN. +const u32RangeForF32FiniteInfNaN = [...fullU32Range(), ...f32ZerosInU32, ...f32InfAndNaNInU32]; + +// u32 cases for bitcasting to f32 finite only. +const u32RangeForF32Finite = u32RangeForF32FiniteInfNaN.filter(u => + isFiniteF32(reinterpretU32AsF32(u)) +); + /** * @returns a Comparator for checking if a f32 value is a valid * bitcast conversion from f32. */ function bitcastF32ToF32Comparator(f) { - if (!isFinite(f)) return anyF32; + if (!isFiniteF32(f)) return anyF32; const acceptable = [f, ...(isSubnormalNumberF32(f) ? f32ZerosInF32 : [])]; return anyOf(...acceptable.map(f32)); } @@ -98,7 +287,7 @@ function bitcastF32ToF32Comparator(f) { * bitcast conversion from f32. */ function bitcastF32ToU32Comparator(f) { - if (!isFinite(f)) return anyU32; + if (!isFiniteF32(f)) return anyU32; const acceptable = [reinterpretF32AsU32(f), ...(isSubnormalNumberF32(f) ? f32ZerosInU32 : [])]; return anyOf(...acceptable.map(u32)); @@ -109,13 +298,344 @@ function bitcastF32ToU32Comparator(f) { * bitcast conversion from f32. */ function bitcastF32ToI32Comparator(f) { - if (!isFinite(f)) return anyI32; + if (!isFiniteF32(f)) return anyI32; const acceptable = [reinterpretF32AsI32(f), ...(isSubnormalNumberF32(f) ? f32ZerosInI32 : [])]; return anyOf(...acceptable.map(i32)); } -const TODO_CASES = []; +/** + * @returns a Comparator for checking if a f32 value is a valid + * bitcast conversion from i32. + */ +function bitcastI32ToF32Comparator(i) { + const f = reinterpretI32AsF32(i); + if (!isFiniteF32(f)) return anyI32; + // Positive or negative zero bit pattern map to any zero. + if (f32ZerosInI32.includes(i)) return anyOf(...f32ZerosInF32.map(f32)); + const acceptable = [f, ...(isSubnormalNumberF32(f) ? f32ZerosInF32 : [])]; + return anyOf(...acceptable.map(f32)); +} + +/** + * @returns a Comparator for checking if a f32 value is a valid + * bitcast conversion from u32. + */ +function bitcastU32ToF32Comparator(u) { + const f = reinterpretU32AsF32(u); + if (!isFiniteF32(f)) return anyU32; + // Positive or negative zero bit pattern map to any zero. + if (f32ZerosInU32.includes(u)) return anyOf(...f32ZerosInF32.map(f32)); + const acceptable = [f, ...(isSubnormalNumberF32(f) ? f32ZerosInF32 : [])]; + return anyOf(...acceptable.map(f32)); +} + +/** + * @returns an array of expected f16 FPInterval for the given bitcasted f16 value, which may be + * subnormal, Inf, or NaN. Test cases that bitcasted to vector of f16 use this function to get + * per-element expectation and build vector expectation using cartesianProduct. + */ +function generateF16ExpectationIntervals(bitcastedF16Value) { + // If the bitcasted f16 value is inf or nan, the result is unbounded + if (!isFiniteF16(bitcastedF16Value)) { + return [f16UnboundedInterval]; + } + // If the casted f16 value is +/-0.0, the result can be one of both. Note that in JS -0.0 === 0.0. + if (bitcastedF16Value === 0.0) { + return [f16ZerosInterval]; + } + const exactInterval = FP.f16.toInterval(bitcastedF16Value); + // If the casted f16 value is subnormal, it also may be flushed to +/-0.0. + return [exactInterval, ...(isSubnormalNumberF16(bitcastedF16Value) ? [f16ZerosInterval] : [])]; +} + +/** + * @returns a Comparator for checking if a f16 value is a valid + * bitcast conversion from f16. + */ +function bitcastF16ToF16Comparator(f) { + if (!isFiniteF16(f)) return anyOf(f16UnboundedInterval); + return anyOf(...generateF16ExpectationIntervals(f)); +} + +/** + * @returns a Comparator for checking if a vec2 is a valid bitcast + * conversion from u32. + */ +function bitcastU32ToVec2F16Comparator(u) { + const bitcastedVec2F16InU16x2 = u32ToU16x2(u).map(reinterpretU16AsF16); + // Generate expection for vec2 f16 result, by generating expected intervals for each elements and + // then do cartesian product. + const expectedIntervalsCombination = cartesianProduct( + ...bitcastedVec2F16InU16x2.map(generateF16ExpectationIntervals) + ); + + return anyOf(...expectedIntervalsCombination); +} + +/** + * @returns a Comparator for checking if a vec2 value is a valid + * bitcast conversion from i32. + */ +function bitcastI32ToVec2F16Comparator(i) { + const bitcastedVec2F16InU16x2 = u32ToU16x2(reinterpretI32AsU32(i)).map(reinterpretU16AsF16); + // Generate expection for vec2 f16 result, by generating expected intervals for each elements and + // then do cartesian product. + const expectedIntervalsCombination = cartesianProduct( + ...bitcastedVec2F16InU16x2.map(generateF16ExpectationIntervals) + ); + + return anyOf(...expectedIntervalsCombination); +} + +/** + * @returns a Comparator for checking if a vec2 value is a valid + * bitcast conversion from f32. + */ +function bitcastF32ToVec2F16Comparator(f) { + // If input f32 is not finite, it can be evaluated to any value and thus any result f16 vec2 is + // possible. + if (!isFiniteF32(f)) { + return anyOf([f16UnboundedInterval, f16UnboundedInterval]); + } + const bitcastedVec2F16InU16x2 = u32ToU16x2(reinterpretF32AsU32(f)).map(reinterpretU16AsF16); + // Generate expection for vec2 f16 result, by generating expected intervals for each elements and + // then do cartesian product. + const expectedIntervalsCombination = cartesianProduct( + ...bitcastedVec2F16InU16x2.map(generateF16ExpectationIntervals) + ); + + return anyOf(...expectedIntervalsCombination); +} + +/** + * @returns a Comparator for checking if a vec4 is a valid + * bitcast conversion from vec2. + */ +function bitcastVec2U32ToVec4F16Comparator(u32x2) { + assert(u32x2.length === 2); + const bitcastedVec4F16InU16x4 = u32x2.flatMap(u32ToU16x2).map(reinterpretU16AsF16); + // Generate expection for vec4 f16 result, by generating expected intervals for each elements and + // then do cartesian product. + const expectedIntervalsCombination = cartesianProduct( + ...bitcastedVec4F16InU16x4.map(generateF16ExpectationIntervals) + ); + + return anyOf(...expectedIntervalsCombination); +} + +/** + * @returns a Comparator for checking if a vec4 is a valid + * bitcast conversion from vec2. + */ +function bitcastVec2I32ToVec4F16Comparator(i32x2) { + assert(i32x2.length === 2); + const bitcastedVec4F16InU16x4 = i32x2 + .map(reinterpretI32AsU32) + .flatMap(u32ToU16x2) + .map(reinterpretU16AsF16); + // Generate expection for vec4 f16 result, by generating expected intervals for each elements and + // then do cartesian product. + const expectedIntervalsCombination = cartesianProduct( + ...bitcastedVec4F16InU16x4.map(generateF16ExpectationIntervals) + ); + + return anyOf(...expectedIntervalsCombination); +} + +/** + * @returns a Comparator for checking if a vec4 is a valid + * bitcast conversion from vec2. + */ +function bitcastVec2F32ToVec4F16Comparator(f32x2) { + assert(f32x2.length === 2); + const bitcastedVec4F16InU16x4 = f32x2 + .map(reinterpretF32AsU32) + .flatMap(u32ToU16x2) + .map(reinterpretU16AsF16); + // Generate expection for vec4 f16 result, by generating expected intervals for each elements and + // then do cartesian product. + const expectedIntervalsCombination = cartesianProduct( + ...bitcastedVec4F16InU16x4.map(generateF16ExpectationIntervals) + ); + + return anyOf(...expectedIntervalsCombination); +} + +// Structure that store the expectations of a single 32bit scalar/element bitcasted from two f16. + +/** + * @returns the array of possible 16bits, represented in u16, that bitcasted + * from a given finite f16 represented in u16, handling the possible subnormal + * flushing. Used to build up 32bits or larger results. + */ +function possibleBitsInU16FromFiniteF16InU16(f16InU16) { + const h = reinterpretU16AsF16(f16InU16); + assert(isFiniteF16(h)); + return [f16InU16, ...(isSubnormalNumberF16(h) ? f16ZerosInU16 : [])]; +} + +/** + * @returns the expectation for a single 32bit scalar bitcasted from given pair of + * f16, result in ExpectionFor32BitsScalarFromF16x2. + */ +function possible32BitScalarIntervalsFromF16x2(f16x2InU16x2, type) { + assert(f16x2InU16x2.length === 2); + let reinterpretFromU32; + let expectationsForValue; + let unboundedExpectations; + if (type === 'u32') { + reinterpretFromU32 = x => x; + expectationsForValue = x => [u32(x)]; + // Scalar expectation can not express "unbounded" for i32 and u32, so use 0 here as a + // placeholder, and the possibleExpectations should be ignored if the result is unbounded. + unboundedExpectations = [u32(0)]; + } else if (type === 'i32') { + reinterpretFromU32 = x => reinterpretU32AsI32(x); + expectationsForValue = x => [i32(x)]; + // Scalar expectation can not express "unbounded" for i32 and u32, so use 0 here as a + // placeholder, and the possibleExpectations should be ignored if the result is unbounded. + unboundedExpectations = [i32(0)]; + } else { + assert(type === 'f32'); + reinterpretFromU32 = x => reinterpretU32AsF32(x); + expectationsForValue = x => { + // Handle the possible Inf/NaN/zeros and subnormal cases for f32 result. + if (!isFiniteF32(x)) { + return [f32UnboundedInterval]; + } + // If the casted f16 value is +/-0.0, the result can be one of both. Note that in JS -0.0 === 0.0. + if (x === 0.0) { + return [f32ZerosInterval]; + } + const exactInterval = FP.f32.toInterval(x); + // If the casted f16 value is subnormal, it also may be flushed to +/-0.0. + return [exactInterval, ...(isSubnormalNumberF32(x) ? [f32ZerosInterval] : [])]; + }; + unboundedExpectations = [f32UnboundedInterval]; + } + // Return unbounded expection if f16 Inf/NaN occurs + if ( + !isFiniteF16(reinterpretU16AsF16(f16x2InU16x2[0])) || + !isFiniteF16(reinterpretU16AsF16(f16x2InU16x2[1])) + ) { + return { possibleExpectations: unboundedExpectations, isUnbounded: true }; + } + const possibleU16Bits = f16x2InU16x2.map(possibleBitsInU16FromFiniteF16InU16); + const possibleExpectations = cartesianProduct(...possibleU16Bits).flatMap(possibleBitsU16x2 => { + assert(possibleBitsU16x2.length === 2); + return expectationsForValue(reinterpretFromU32(u16x2ToU32(possibleBitsU16x2))); + }); + + return { possibleExpectations, isUnbounded: false }; +} + +/** + * @returns a Comparator for checking if a u32 value is a valid + * bitcast conversion from vec2 f16. + */ +function bitcastVec2F16ToU32Comparator(vec2F16InU16x2) { + assert(vec2F16InU16x2.length === 2); + const expectations = possible32BitScalarIntervalsFromF16x2(vec2F16InU16x2, 'u32'); + // Return alwaysPass if result is expected unbounded. + if (expectations.isUnbounded) { + return anyU32; + } + return anyOf(...expectations.possibleExpectations); +} + +/** + * @returns a Comparator for checking if a i32 value is a valid + * bitcast conversion from vec2 f16. + */ +function bitcastVec2F16ToI32Comparator(vec2F16InU16x2) { + assert(vec2F16InU16x2.length === 2); + const expectations = possible32BitScalarIntervalsFromF16x2(vec2F16InU16x2, 'i32'); + // Return alwaysPass if result is expected unbounded. + if (expectations.isUnbounded) { + return anyI32; + } + return anyOf(...expectations.possibleExpectations); +} + +/** + * @returns a Comparator for checking if a i32 value is a valid + * bitcast conversion from vec2 f16. + */ +function bitcastVec2F16ToF32Comparator(vec2F16InU16x2) { + assert(vec2F16InU16x2.length === 2); + const expectations = possible32BitScalarIntervalsFromF16x2(vec2F16InU16x2, 'f32'); + // Return alwaysPass if result is expected unbounded. + if (expectations.isUnbounded) { + return anyF32; + } + return anyOf(...expectations.possibleExpectations); +} + +/** + * @returns a Comparator for checking if a vec2 u32 value is a valid + * bitcast conversion from vec4 f16. + */ +function bitcastVec4F16ToVec2U32Comparator(vec4F16InU16x4) { + assert(vec4F16InU16x4.length === 4); + const expectationsPerElement = [vec4F16InU16x4.slice(0, 2), vec4F16InU16x4.slice(2, 4)].map(e => + possible32BitScalarIntervalsFromF16x2(e, 'u32') + ); + + // Return alwaysPass if any element is expected unbounded. Although it may be only one unbounded + // element in the result vector, currently we don't have a way to build a comparator that expect + // only one element of i32/u32 vector unbounded. + if (expectationsPerElement.map(e => e.isUnbounded).reduce((a, b) => a || b, false)) { + return alwaysPass('any vec2'); + } + return anyOf( + ...cartesianProduct(...expectationsPerElement.map(e => e.possibleExpectations)).map( + e => new Vector(e) + ) + ); +} + +/** + * @returns a Comparator for checking if a vec2 i32 value is a valid + * bitcast conversion from vec4 f16. + */ +function bitcastVec4F16ToVec2I32Comparator(vec4F16InU16x4) { + assert(vec4F16InU16x4.length === 4); + const expectationsPerElement = [vec4F16InU16x4.slice(0, 2), vec4F16InU16x4.slice(2, 4)].map(e => + possible32BitScalarIntervalsFromF16x2(e, 'i32') + ); + + // Return alwaysPass if any element is expected unbounded. Although it may be only one unbounded + // element in the result vector, currently we don't have a way to build a comparator that expect + // only one element of i32/u32 vector unbounded. + if (expectationsPerElement.map(e => e.isUnbounded).reduce((a, b) => a || b, false)) { + return alwaysPass('any vec2'); + } + return anyOf( + ...cartesianProduct(...expectationsPerElement.map(e => e.possibleExpectations)).map( + e => new Vector(e) + ) + ); +} + +/** + * @returns a Comparator for checking if a vec2 f32 value is a valid + * bitcast conversion from vec4 f16. + */ +function bitcastVec4F16ToVec2F32Comparator(vec4F16InU16x4) { + assert(vec4F16InU16x4.length === 4); + const expectationsPerElement = [vec4F16InU16x4.slice(0, 2), vec4F16InU16x4.slice(2, 4)].map(e => + possible32BitScalarIntervalsFromF16x2(e, 'f32') + ); + + return anyOf( + ...cartesianProduct(...expectationsPerElement.map(e => e.possibleExpectations)).map(e => [ + e[0], + e[1], + ]) + ); +} + export const d = makeCaseCache('bitcast', { // Identity Cases i32_to_i32: () => fullI32Range().map(e => ({ input: i32(e), expected: i32(e) })), @@ -125,26 +645,190 @@ export const d = makeCaseCache('bitcast', { input: f32(e), expected: bitcastF32ToF32Comparator(e), })), - f32_to_f32: () => f32Range.map(e => ({ input: f32(e), expected: bitcastF32ToF32Comparator(e) })), + f32_to_f32: () => + f32FiniteRange.map(e => ({ input: f32(e), expected: bitcastF32ToF32Comparator(e) })), + f16_inf_nan_to_f16: () => + [...f16FiniteInF16, ...f16InfAndNaNInF16].map(e => ({ + input: f16(e), + expected: bitcastF16ToF16Comparator(e), + })), + f16_to_f16: () => + f16FiniteInF16.map(e => ({ input: f16(e), expected: bitcastF16ToF16Comparator(e) })), // i32,u32,f32 to different i32,u32,f32 i32_to_u32: () => fullI32Range().map(e => ({ input: i32(e), expected: u32(e) })), - i32_to_f32: () => TODO_CASES, + i32_to_f32: () => + i32RangeForF32Finite.map(e => ({ + input: i32(e), + expected: bitcastI32ToF32Comparator(e), + })), + i32_to_f32_inf_nan: () => + i32RangeForF32FiniteInfNaN.map(e => ({ + input: i32(e), + expected: bitcastI32ToF32Comparator(e), + })), u32_to_i32: () => fullU32Range().map(e => ({ input: u32(e), expected: i32(e) })), - u32_to_f32: () => TODO_CASES, + u32_to_f32: () => + u32RangeForF32Finite.map(e => ({ + input: u32(e), + expected: bitcastU32ToF32Comparator(e), + })), + u32_to_f32_inf_nan: () => + u32RangeForF32FiniteInfNaN.map(e => ({ + input: u32(e), + expected: bitcastU32ToF32Comparator(e), + })), f32_inf_nan_to_i32: () => f32RangeWithInfAndNaN.map(e => ({ input: f32(e), expected: bitcastF32ToI32Comparator(e), })), - f32_to_i32: () => f32Range.map(e => ({ input: f32(e), expected: bitcastF32ToI32Comparator(e) })), + f32_to_i32: () => + f32FiniteRange.map(e => ({ input: f32(e), expected: bitcastF32ToI32Comparator(e) })), f32_inf_nan_to_u32: () => f32RangeWithInfAndNaN.map(e => ({ input: f32(e), expected: bitcastF32ToU32Comparator(e), })), - f32_to_u32: () => f32Range.map(e => ({ input: f32(e), expected: bitcastF32ToU32Comparator(e) })), + f32_to_u32: () => + f32FiniteRange.map(e => ({ input: f32(e), expected: bitcastF32ToU32Comparator(e) })), + + // i32,u32,f32 to vec2 + u32_to_vec2_f16_inf_nan: () => + u32RangeForF16Vec2FiniteInfNaN.map(e => ({ + input: u32(e), + expected: bitcastU32ToVec2F16Comparator(e), + })), + u32_to_vec2_f16: () => + u32RangeForF16Vec2Finite.map(e => ({ + input: u32(e), + expected: bitcastU32ToVec2F16Comparator(e), + })), + i32_to_vec2_f16_inf_nan: () => + i32RangeForF16Vec2FiniteInfNaN.map(e => ({ + input: i32(e), + expected: bitcastI32ToVec2F16Comparator(e), + })), + i32_to_vec2_f16: () => + i32RangeForF16Vec2Finite.map(e => ({ + input: i32(e), + expected: bitcastI32ToVec2F16Comparator(e), + })), + f32_inf_nan_to_vec2_f16_inf_nan: () => + f32RangeWithInfAndNaNForF16Vec2FiniteInfNaN.map(e => ({ + input: f32(e), + expected: bitcastF32ToVec2F16Comparator(e), + })), + f32_to_vec2_f16: () => + f32FiniteRangeForF16Vec2Finite.map(e => ({ + input: f32(e), + expected: bitcastF32ToVec2F16Comparator(e), + })), + + // vec2, vec2, vec2 to vec4 + vec2_i32_to_vec4_f16_inf_nan: () => + slidingSlice(i32RangeForF16Vec2FiniteInfNaN, 2).map(e => ({ + input: toVector(e, i32), + expected: bitcastVec2I32ToVec4F16Comparator(e), + })), + vec2_i32_to_vec4_f16: () => + slidingSlice(i32RangeForF16Vec2Finite, 2).map(e => ({ + input: toVector(e, i32), + expected: bitcastVec2I32ToVec4F16Comparator(e), + })), + vec2_u32_to_vec4_f16_inf_nan: () => + slidingSlice(u32RangeForF16Vec2FiniteInfNaN, 2).map(e => ({ + input: toVector(e, u32), + expected: bitcastVec2U32ToVec4F16Comparator(e), + })), + vec2_u32_to_vec4_f16: () => + slidingSlice(u32RangeForF16Vec2Finite, 2).map(e => ({ + input: toVector(e, u32), + expected: bitcastVec2U32ToVec4F16Comparator(e), + })), + vec2_f32_inf_nan_to_vec4_f16_inf_nan: () => + slidingSlice(f32RangeWithInfAndNaNForF16Vec2FiniteInfNaN, 2).map(e => ({ + input: toVector(e, f32), + expected: bitcastVec2F32ToVec4F16Comparator(e), + })), + vec2_f32_to_vec4_f16: () => + slidingSlice(f32FiniteRangeForF16Vec2Finite, 2).map(e => ({ + input: toVector(e, f32), + expected: bitcastVec2F32ToVec4F16Comparator(e), + })), + + // vec2 to i32, u32, f32 + vec2_f16_to_u32: () => + f16Vec2FiniteInU16x2.map(e => ({ + input: u16x2ToVec2F16(e), + expected: bitcastVec2F16ToU32Comparator(e), + })), + vec2_f16_inf_nan_to_u32: () => + f16Vec2FiniteInfNanInU16x2.map(e => ({ + input: u16x2ToVec2F16(e), + expected: bitcastVec2F16ToU32Comparator(e), + })), + vec2_f16_to_i32: () => + f16Vec2FiniteInU16x2.map(e => ({ + input: u16x2ToVec2F16(e), + expected: bitcastVec2F16ToI32Comparator(e), + })), + vec2_f16_inf_nan_to_i32: () => + f16Vec2FiniteInfNanInU16x2.map(e => ({ + input: u16x2ToVec2F16(e), + expected: bitcastVec2F16ToI32Comparator(e), + })), + vec2_f16_to_f32_finite: () => + f16Vec2FiniteInU16x2 + .filter(u16x2 => isFiniteF32(reinterpretU32AsF32(u16x2ToU32(u16x2)))) + .map(e => ({ + input: u16x2ToVec2F16(e), + expected: bitcastVec2F16ToF32Comparator(e), + })), + vec2_f16_inf_nan_to_f32: () => + f16Vec2FiniteInfNanInU16x2.map(e => ({ + input: u16x2ToVec2F16(e), + expected: bitcastVec2F16ToF32Comparator(e), + })), + + // vec4 to vec2 of i32, u32, f32 + vec4_f16_to_vec2_u32: () => + f16Vec2FiniteInU16x4.map(e => ({ + input: u16x4ToVec4F16(e), + expected: bitcastVec4F16ToVec2U32Comparator(e), + })), + vec4_f16_inf_nan_to_vec2_u32: () => + f16Vec2FiniteInfNanInU16x4.map(e => ({ + input: u16x4ToVec4F16(e), + expected: bitcastVec4F16ToVec2U32Comparator(e), + })), + vec4_f16_to_vec2_i32: () => + f16Vec2FiniteInU16x4.map(e => ({ + input: u16x4ToVec4F16(e), + expected: bitcastVec4F16ToVec2I32Comparator(e), + })), + vec4_f16_inf_nan_to_vec2_i32: () => + f16Vec2FiniteInfNanInU16x4.map(e => ({ + input: u16x4ToVec4F16(e), + expected: bitcastVec4F16ToVec2I32Comparator(e), + })), + vec4_f16_to_vec2_f32_finite: () => + f16Vec2FiniteInU16x4 + .filter( + u16x4 => + isFiniteF32(reinterpretU32AsF32(u16x2ToU32(u16x4.slice(0, 2)))) && + isFiniteF32(reinterpretU32AsF32(u16x2ToU32(u16x4.slice(2, 4)))) + ) + .map(e => ({ + input: u16x4ToVec4F16(e), + expected: bitcastVec4F16ToVec2F32Comparator(e), + })), + vec4_f16_inf_nan_to_vec2_f32: () => + f16Vec2FiniteInfNanInU16x4.map(e => ({ + input: u16x4ToVec4F16(e), + expected: bitcastVec4F16ToVec2F32Comparator(e), + })), }); /** @@ -157,12 +841,10 @@ function bitcastBuilder(canonicalDestType, params) { ? `vec${params.vectorize}<${canonicalDestType}>` : canonicalDestType; - if (params.alias) { - return (parameterTypes, resultType, cases, inputSource) => - `alias myalias = ${destType};\n` + - builtin(`bitcast`)(parameterTypes, resultType, cases, inputSource); - } - return builtin(`bitcast<${destType}>`); + return builtinWithPredeclaration( + `bitcast<${destType}>`, + params.alias ? `alias myalias = ${destType};` : '' + ); } // Identity cases @@ -288,7 +970,14 @@ g.test('i32_to_f32') .combine('vectorize', [undefined, 2, 3, 4]) .combine('alias', [false, true]) ) - .unimplemented(); + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'i32_to_f32' : 'i32_to_f32_inf_nan' + ); + + await run(t, bitcastBuilder('f32', t.params), [TypeI32], TypeF32, t.params, cases); + }); g.test('u32_to_f32') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') @@ -299,7 +988,14 @@ g.test('u32_to_f32') .combine('vectorize', [undefined, 2, 3, 4]) .combine('alias', [false, true]) ) - .unimplemented(); + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'u32_to_f32' : 'u32_to_f32_inf_nan' + ); + + await run(t, bitcastBuilder('f32', t.params), [TypeU32], TypeF32, t.params, cases); + }); // 16 bit types @@ -315,140 +1011,277 @@ g.test('f16_to_f16') .combine('vectorize', [undefined, 2, 3, 4]) .combine('alias', [false, true]) ) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'f16_to_f16' : 'f16_inf_nan_to_f16' + ); + + await run(t, bitcastBuilder('f16', t.params), [TypeF16], TypeF16, t.params, cases); + }); // f16: 32-bit scalar numeric to vec2 g.test('i32_to_vec2h') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast i32 to vec2h tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'i32_to_vec2_f16' : 'i32_to_vec2_f16_inf_nan' + ); + + await run( + t, + bitcastBuilder('vec2', t.params), + [TypeI32], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); g.test('u32_to_vec2h') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast u32 to vec2h tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'u32_to_vec2_f16' : 'u32_to_vec2_f16_inf_nan' + ); + + await run( + t, + bitcastBuilder('vec2', t.params), + [TypeU32], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); g.test('f32_to_vec2h') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast u32 to vec2h tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'f32_to_vec2_f16' : 'f32_inf_nan_to_vec2_f16_inf_nan' + ); + + await run( + t, + bitcastBuilder('vec2', t.params), + [TypeF32], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); // f16: vec2<32-bit scalar numeric> to vec4 g.test('vec2i_to_vec4h') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec2i to vec4h tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec2_i32_to_vec4_f16' : 'vec2_i32_to_vec4_f16_inf_nan' + ); + + await run( + t, + bitcastBuilder('vec4', t.params), + [TypeVec(2, TypeI32)], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); g.test('vec2u_to_vec4h') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec2u to vec4h tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec2_u32_to_vec4_f16' : 'vec2_u32_to_vec4_f16_inf_nan' + ); + + await run( + t, + bitcastBuilder('vec4', t.params), + [TypeVec(2, TypeU32)], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); g.test('vec2f_to_vec4h') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec2f to vec2h tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' + ? 'vec2_f32_to_vec4_f16' + : 'vec2_f32_inf_nan_to_vec4_f16_inf_nan' + ); + + await run( + t, + bitcastBuilder('vec4', t.params), + [TypeVec(2, TypeF32)], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); // f16: vec2 to 32-bit scalar numeric g.test('vec2h_to_i32') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec2h to i32 tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec2_f16_to_i32' : 'vec2_f16_inf_nan_to_i32' + ); + + await run(t, bitcastBuilder('i32', t.params), [TypeVec(2, TypeF16)], TypeI32, t.params, cases); + }); g.test('vec2h_to_u32') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec2h to u32 tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec2_f16_to_u32' : 'vec2_f16_inf_nan_to_u32' + ); + + await run(t, bitcastBuilder('u32', t.params), [TypeVec(2, TypeF16)], TypeU32, t.params, cases); + }); g.test('vec2h_to_f32') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec2h to f32 tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec2_f16_to_f32_finite' : 'vec2_f16_inf_nan_to_f32' + ); + + await run(t, bitcastBuilder('f32', t.params), [TypeVec(2, TypeF16)], TypeF32, t.params, cases); + }); // f16: vec4 to vec2<32-bit scalar numeric> g.test('vec4h_to_vec2i') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec4h to vec2i tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec4_f16_to_vec2_i32' : 'vec4_f16_inf_nan_to_vec2_i32' + ); + + await run( + t, + bitcastBuilder('vec2', t.params), + [TypeVec(4, TypeF16)], + TypeVec(2, TypeI32), + t.params, + cases + ); + }); g.test('vec4h_to_vec2u') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec4h to vec2u tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' ? 'vec4_f16_to_vec2_u32' : 'vec4_f16_inf_nan_to_vec2_u32' + ); + + await run( + t, + bitcastBuilder('vec2', t.params), + [TypeVec(4, TypeF16)], + TypeVec(2, TypeU32), + t.params, + cases + ); + }); g.test('vec4h_to_vec2f') .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') .desc(`bitcast vec4h to vec2f tests`) - .params(u => - u - .combine('inputSource', allInputSources) - .combine('vectorize', [undefined, 2, 3, 4]) - .combine('alias', [false, true]) - ) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('alias', [false, true])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + // Infinities and NaNs are errors in const-eval. + t.params.inputSource === 'const' + ? 'vec4_f16_to_vec2_f32_finite' + : 'vec4_f16_inf_nan_to_vec2_f32' + ); + + await run( + t, + bitcastBuilder('vec2', t.params), + [TypeVec(4, TypeF16)], + TypeVec(2, TypeF32), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js index b591217cfad..54b9bcc3f37 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js @@ -1,6 +1,25 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { basicExpressionBuilder } from '../../expression.js'; /* @returns a ShaderBuilder that calls the builtin with the given name */ + **/ import { + abstractFloatShaderBuilder, + basicExpressionBuilder, + basicExpressionWithPredeclarationBuilder, +} from '../../expression.js'; + +/* @returns a ShaderBuilder that calls the builtin with the given name */ export function builtin(name) { return basicExpressionBuilder(values => `${name}(${values.join(', ')})`); } + +/* @returns a ShaderBuilder that calls the builtin with the given name that returns AbstractFloats */ +export function abstractBuiltin(name) { + return abstractFloatShaderBuilder(values => `${name}(${values.join(', ')})`); +} + +/* @returns a ShaderBuilder that calls the builtin with the given name and has given predeclaration */ +export function builtinWithPredeclaration(name, predeclaration) { + return basicExpressionWithPredeclarationBuilder( + values => `${name}(${values.join(', ')})`, + predeclaration + ); +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js index 0182a94962a..e8d9bedc8dd 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js @@ -11,9 +11,9 @@ Returns the ceiling of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -37,6 +37,7 @@ export const d = makeCaseCache('ceil', { -1.0, -1.1, -1.9, + 0x80000000, // https://github.com/gpuweb/cts/issues/2766 ...fullF32Range(), ], @@ -44,6 +45,29 @@ export const d = makeCaseCache('ceil', { FP.f32.ceilInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // Small positive numbers + 0.1, + 0.9, + 1.0, + 1.1, + 1.9, + // Small negative numbers + -0.1, + -0.9, + -1.0, + -1.1, + -1.9, + 0x8000, // https://github.com/gpuweb/cts/issues/2766 + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.ceilInterval + ); + }, }); g.test('abstract_float') @@ -65,4 +89,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('ceil'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js index a6c14275458..49559fc382b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js @@ -16,102 +16,100 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { kBit } from '../../../../../util/constants.js'; +import { kValue } from '../../../../../util/constants.js'; import { - i32, - i32Bits, TypeF32, + TypeF16, TypeI32, TypeU32, - u32, - u32Bits, + TypeAbstractFloat, } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseF32Range } from '../../../../../util/math.js'; +import { sparseF32Range, sparseF16Range, sparseF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +const u32Values = [0, 1, 2, 3, 0x70000000, 0x80000000, kValue.u32.max]; + +const i32Values = [ + kValue.i32.negative.min, + -3, + -2, + -1, + 0, + 1, + 2, + 3, + 0x70000000, + kValue.i32.positive.max, +]; + export const d = makeCaseCache('clamp', { - u32: () => { - // This array must be strictly increasing, since that ordering determines - // the expected values. - const test_values = [ - u32Bits(kBit.u32.min), - u32(1), - u32(2), - u32(0x70000000), - u32(0x80000000), - u32Bits(kBit.u32.max), - ]; - - return generateIntegerTestCases(test_values); + u32_non_const: () => { + return generateIntegerTestCases(u32Values, TypeU32, 'non-const'); }, - i32: () => { - // This array must be strictly increasing, since that ordering determines - // the expected values. - const test_values = [ - i32Bits(kBit.i32.negative.min), - i32(-2), - i32(-1), - i32(0), - i32(1), - i32(2), - i32Bits(0x70000000), - i32Bits(kBit.i32.positive.max), - ]; - - return generateIntegerTestCases(test_values); + u32_const: () => { + return generateIntegerTestCases(u32Values, TypeU32, 'const'); + }, + i32_non_const: () => { + return generateIntegerTestCases(i32Values, TypeI32, 'non-const'); + }, + i32_const: () => { + return generateIntegerTestCases(i32Values, TypeI32, 'const'); }, f32_const: () => { - return FP.f32.generateScalarTripleToIntervalCases( - sparseF32Range(), - sparseF32Range(), - sparseF32Range(), - 'finite', - ...FP.f32.clampIntervals - ); + return generateFloatTestCases(sparseF32Range(), 'f32', 'const'); }, f32_non_const: () => { - return FP.f32.generateScalarTripleToIntervalCases( - sparseF32Range(), - sparseF32Range(), - sparseF32Range(), - 'unfiltered', - ...FP.f32.clampIntervals - ); + return generateFloatTestCases(sparseF32Range(), 'f32', 'non-const'); + }, + f16_const: () => { + return generateFloatTestCases(sparseF16Range(), 'f16', 'const'); + }, + f16_non_const: () => { + return generateFloatTestCases(sparseF16Range(), 'f16', 'non-const'); + }, + abstract: () => { + return generateFloatTestCases(sparseF64Range(), 'abstract', 'const'); }, }); -/** - * Calculates clamp using the min-max formula. - * clamp(e, f, g) = min(max(e, f), g) - * - * Operates on indices of an ascending sorted array, instead of the actual - * values to avoid rounding issues. - * - * @returns the index of the clamped value - */ -function calculateMinMaxClamp(ei, fi, gi) { - return Math.min(Math.max(ei, fi), gi); +/** @returns a set of clamp test cases from an ascending list of integer values */ +function generateIntegerTestCases(test_values, type, stage) { + return test_values.flatMap(low => + test_values.flatMap(high => + stage === 'const' && low > high + ? [] + : test_values.map(e => ({ + input: [type.create(e), type.create(low), type.create(high)], + expected: type.create(Math.min(Math.max(e, low), high)), + })) + ) + ); } -/** @returns a set of clamp test cases from an ascending list of integer values */ -function generateIntegerTestCases(test_values) { - const cases = new Array(); - test_values.forEach((e, ei) => { - test_values.forEach((f, fi) => { - test_values.forEach((g, gi) => { - const expected_idx = calculateMinMaxClamp(ei, fi, gi); - const expected = test_values[expected_idx]; - cases.push({ input: [e, f, g], expected }); - }); - }); - }); - return cases; +function generateFloatTestCases(test_values, trait, stage) { + return test_values.flatMap(low => + test_values.flatMap(high => + stage === 'const' && low > high + ? [] + : test_values.flatMap(e => { + const c = FP[trait].makeScalarTripleToIntervalCase( + e, + low, + high, + stage === 'const' ? 'finite' : 'unfiltered', + ...FP[trait].clampIntervals + ); + + return c === undefined ? [] : [c]; + }) + ) + ); } g.test('abstract_int') @@ -125,7 +123,7 @@ g.test('u32') .desc(`u32 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) .fn(async t => { - const cases = await d.get('u32'); + const cases = await d.get(t.params.inputSource === 'const' ? 'u32_const' : 'u32_non_const'); await run(t, builtin('clamp'), [TypeU32, TypeU32, TypeU32], TypeU32, t.params, cases); }); @@ -134,15 +132,27 @@ g.test('i32') .desc(`i32 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) .fn(async t => { - const cases = await d.get('i32'); + const cases = await d.get(t.params.inputSource === 'const' ? 'i32_const' : 'i32_non_const'); await run(t, builtin('clamp'), [TypeI32, TypeI32, TypeI32], TypeI32, t.params, cases); }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('clamp'), + [TypeAbstractFloat, TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -157,4 +167,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('clamp'), [TypeF16, TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js index 902b6f64729..c82efe4fd46 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js @@ -7,13 +7,12 @@ S is AbstractFloat, f32, f16 T is S or vecN @const fn cos(e: T ) -> T Returns the cosine of e. Component-wise when T is a vector. - `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, linearRange } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -34,6 +33,18 @@ export const d = makeCaseCache('cos', { FP.f32.cosInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // Well-defined accuracy range + ...linearRange(-Math.PI, Math.PI, 1000), + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.cosInterval + ); + }, }); g.test('abstract_float') @@ -61,4 +72,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('cos'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cosh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cosh.spec.js index a95e3aa5df3..e478587408c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cosh.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cosh.spec.js @@ -10,9 +10,9 @@ Returns the hyperbolic cosine of e. Component-wise when T is a vector `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -27,6 +27,12 @@ export const d = makeCaseCache('cosh', { f32_non_const: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.coshInterval); }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'finite', FP.f16.coshInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.coshInterval); + }, }); g.test('abstract_float') @@ -48,4 +54,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('cosh'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cross.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cross.spec.js index 1cbc17b9e4b..22a07688c17 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cross.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cross.spec.js @@ -9,13 +9,13 @@ Returns the cross product of e1 and e2. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { TypeAbstractFloat, TypeF16, TypeF32, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { vectorF32Range } from '../../../../../util/math.js'; +import { sparseVectorF64Range, vectorF16Range, vectorF32Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -36,13 +36,47 @@ export const d = makeCaseCache('cross', { FP.f32.crossInterval ); }, + f16_const: () => { + return FP.f16.generateVectorPairToVectorCases( + vectorF16Range(3), + vectorF16Range(3), + 'finite', + FP.f16.crossInterval + ); + }, + f16_non_const: () => { + return FP.f16.generateVectorPairToVectorCases( + vectorF16Range(3), + vectorF16Range(3), + 'unfiltered', + FP.f16.crossInterval + ); + }, + abstract: () => { + return FP.abstract.generateVectorPairToVectorCases( + sparseVectorF64Range(3), + sparseVectorF64Range(3), + 'finite', + FP.abstract.crossInterval + ); + }, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('cross'), + [TypeVec(3, TypeAbstractFloat), TypeVec(3, TypeAbstractFloat)], + TypeVec(3, TypeAbstractFloat), + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -64,4 +98,17 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run( + t, + builtin('cross'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16)], + TypeVec(3, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/degrees.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/degrees.spec.js index 4867282d29d..818d0d8adea 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/degrees.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/degrees.spec.js @@ -10,13 +10,13 @@ Converts radians to degrees, approximating e1 × 180 ÷ π. Component-wise when `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeAbstractFloat, TypeF16, TypeF32 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF16Range, fullF32Range, fullF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -31,13 +31,42 @@ export const d = makeCaseCache('degrees', { FP.f32.degreesInterval ); }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'finite', FP.f16.degreesInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases( + fullF16Range(), + 'unfiltered', + FP.f16.degreesInterval + ); + }, + abstract: () => { + return FP.abstract.generateScalarToIntervalCases( + fullF64Range(), + 'finite', + FP.abstract.degreesInterval + ); + }, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('degrees'), + [TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -52,4 +81,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('degrees'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/determinant.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/determinant.spec.js index 277d197c998..9f4ca71e685 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/determinant.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/determinant.spec.js @@ -9,7 +9,7 @@ Returns the determinant of e. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeMat } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeMat } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -27,7 +27,7 @@ export const g = makeTestGroup(GPUTest); // quadroot, but using the tighter 4x4 limits for all cases for simplicity. const kDeterminantValues = [-38, -10, -5, -1, 0, 1, 5, 10, 38]; -const kDeterminantMatrixF32Values = { +const kDeterminantMatrixValues = { 2: kDeterminantValues.map((f, idx) => [ [idx % 4 === 0 ? f : idx, idx % 4 === 1 ? f : -idx], [idx % 4 === 2 ? f : -idx, idx % 4 === 3 ? f : idx], @@ -70,49 +70,39 @@ const kDeterminantMatrixF32Values = { ]), }; +// Cases: f32_matDxD_[non_]const +const f32_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`f32_mat${dim}x${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixToScalarCases( + kDeterminantMatrixValues[dim], + nonConst ? 'unfiltered' : 'finite', + FP.f32.determinantInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_matDxD_[non_]const +const f16_cases = [2, 3, 4] + .flatMap(dim => + [true, false].map(nonConst => ({ + [`f16_mat${dim}x${dim}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixToScalarCases( + kDeterminantMatrixValues[dim], + nonConst ? 'unfiltered' : 'finite', + FP.f16.determinantInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('determinant', { - f32_mat2x2_const: () => { - return FP.f32.generateMatrixToScalarCases( - kDeterminantMatrixF32Values[2], - 'finite', - FP.f32.determinantInterval - ); - }, - f32_mat2x2_non_const: () => { - return FP.f32.generateMatrixToScalarCases( - kDeterminantMatrixF32Values[2], - 'unfiltered', - FP.f32.determinantInterval - ); - }, - f32_mat3x3_const: () => { - return FP.f32.generateMatrixToScalarCases( - kDeterminantMatrixF32Values[3], - 'finite', - FP.f32.determinantInterval - ); - }, - f32_mat3x3_non_const: () => { - return FP.f32.generateMatrixToScalarCases( - kDeterminantMatrixF32Values[3], - 'unfiltered', - FP.f32.determinantInterval - ); - }, - f32_mat4x4_const: () => { - return FP.f32.generateMatrixToScalarCases( - kDeterminantMatrixF32Values[4], - 'finite', - FP.f32.determinantInterval - ); - }, - f32_mat4x4_non_const: () => { - return FP.f32.generateMatrixToScalarCases( - kDeterminantMatrixF32Values[4], - 'unfiltered', - FP.f32.determinantInterval - ); - }, + ...f32_cases, + ...f16_cases, }); g.test('abstract_float') @@ -139,5 +129,17 @@ g.test('f32') g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions') .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('dimension', [2, 3, 4])) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources).combine('dim', [2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const dim = t.params.dim; + const cases = await d.get( + t.params.inputSource === 'const' + ? `f16_mat${dim}x${dim}_const` + : `f16_mat${dim}x${dim}_non_const` + ); + + await run(t, builtin('determinant'), [TypeMat(dim, dim, TypeF16)], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/distance.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/distance.spec.js index 154a52c2764..b03ec5bd9f1 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/distance.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/distance.spec.js @@ -11,9 +11,14 @@ Returns the distance between e1 and e2 (e.g. length(e1-e2)). `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, sparseVectorF32Range } from '../../../../../util/math.js'; +import { + fullF32Range, + fullF16Range, + sparseVectorF32Range, + sparseVectorF16Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -21,6 +26,38 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_vecN_[non_]const +const f32_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorPairToIntervalCases( + sparseVectorF32Range(n), + sparseVectorF32Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f32.distanceInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_[non_]const +const f16_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorPairToIntervalCases( + sparseVectorF16Range(n), + sparseVectorF16Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f16.distanceInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('distance', { f32_const: () => { return FP.f32.generateScalarPairToIntervalCases( @@ -38,54 +75,24 @@ export const d = makeCaseCache('distance', { FP.f32.distanceInterval ); }, - f32_vec2_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(2), - sparseVectorF32Range(2), + ...f32_vec_cases, + f16_const: () => { + return FP.f16.generateScalarPairToIntervalCases( + fullF16Range(), + fullF16Range(), 'finite', - FP.f32.distanceInterval + FP.f16.distanceInterval ); }, - f32_vec2_non_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(2), - sparseVectorF32Range(2), + f16_non_const: () => { + return FP.f16.generateScalarPairToIntervalCases( + fullF16Range(), + fullF16Range(), 'unfiltered', - FP.f32.distanceInterval - ); - }, - f32_vec3_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'finite', - FP.f32.distanceInterval - ); - }, - f32_vec3_non_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'unfiltered', - FP.f32.distanceInterval - ); - }, - f32_vec4_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'finite', - FP.f32.distanceInterval - ); - }, - f32_vec4_non_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'unfiltered', - FP.f32.distanceInterval + FP.f16.distanceInterval ); }, + ...f16_vec_cases, }); g.test('abstract_float') @@ -161,7 +168,79 @@ g.test('f32_vec4') }); g.test('f16') - .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('distance'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); + +g.test('f16_vec2') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec2s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run( + t, + builtin('distance'), + [TypeVec(2, TypeF16), TypeVec(2, TypeF16)], + TypeF16, + t.params, + cases + ); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run( + t, + builtin('distance'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16)], + TypeF16, + t.params, + cases + ); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run( + t, + builtin('distance'), + [TypeVec(4, TypeF16), TypeVec(4, TypeF16)], + TypeF16, + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dot.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dot.spec.js index b219b87e6c1..0c4a04ea842 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dot.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dot.spec.js @@ -9,7 +9,7 @@ Returns the dot product of e1 and e2. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; import { sparseVectorF32Range, vectorF32Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; @@ -19,58 +19,27 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -// vec3 and vec4 require calculating all possible permutations, so their runtime is much longer per test, so only using -// sparse vectors for them -export const d = makeCaseCache('dot', { - f32_vec2_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - vectorF32Range(2), - vectorF32Range(2), - 'finite', - FP.f32.dotInterval - ); - }, - f32_vec2_non_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - vectorF32Range(2), - vectorF32Range(2), - 'unfiltered', - FP.f32.dotInterval - ); - }, - f32_vec3_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'finite', - FP.f32.dotInterval - ); - }, - f32_vec3_non_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'unfiltered', - FP.f32.dotInterval - ); - }, - f32_vec4_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'finite', - FP.f32.dotInterval - ); - }, - f32_vec4_non_const: () => { - return FP.f32.generateVectorPairToIntervalCases( - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'unfiltered', - FP.f32.dotInterval - ); - }, -}); +// Cases: [f32|f16]_vecN_[non_]const +const cases = ['f32', 'f16'] + .flatMap(trait => + [2, 3, 4].flatMap(N => + [true, false].map(nonConst => ({ + [`${trait}_vec${N}_${nonConst ? 'non_const' : 'const'}`]: () => { + // vec3 and vec4 require calculating all possible permutations, so their runtime is much + // longer per test, so only using sparse vectors for them. + return FP[trait].generateVectorPairToIntervalCases( + N === 2 ? vectorF32Range(2) : sparseVectorF32Range(N), + N === 2 ? vectorF32Range(2) : sparseVectorF32Range(N), + nonConst ? 'unfiltered' : 'finite', + FP[trait].dotInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('dot', cases); g.test('abstract_int') .specURL('https://www.w3.org/TR/WGSL/#vector-builtin-functions') @@ -153,8 +122,68 @@ g.test('f32_vec4') ); }); -g.test('f16') +g.test('f16_vec2') .specURL('https://www.w3.org/TR/WGSL/#vector-builtin-functions') - .desc(`f16 tests`) + .desc(`f16 tests using vec2s`) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run( + t, + builtin('dot'), + [TypeVec(2, TypeF16), TypeVec(2, TypeF16)], + TypeF16, + t.params, + cases + ); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#vector-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run( + t, + builtin('dot'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16)], + TypeF16, + t.params, + cases + ); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#vector-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run( + t, + builtin('dot'), + [TypeVec(4, TypeF16), TypeVec(4, TypeF16)], + TypeF16, + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp.spec.js index 597876a5618..cc71398ef9f 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp.spec.js @@ -11,7 +11,7 @@ Returns the natural exponentiation of e1 (e.g. e^e1). Component-wise when T is a import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; import { biasedRange, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; @@ -23,7 +23,7 @@ export const g = makeTestGroup(GPUTest); // floor(ln(max f32 value)) = 88, so exp(88) will be within range of a f32, but exp(89) will not // floor(ln(max f64 value)) = 709, so exp(709) can be handled by the testing framework, but exp(710) will misbehave -const inputs = [ +const f32_inputs = [ 0, // Returns 1 by definition -89, // Returns subnormal value kValue.f32.negative.min, // Closest to returning 0 as possible @@ -32,12 +32,28 @@ const inputs = [ ...linearRange(89, 709, 10), // Overflows f32, but not f64 ]; +// floor(ln(max f16 value)) = 11, so exp(11) will be within range of a f16, but exp(12) will not +const f16_inputs = [ + 0, // Returns 1 by definition + -12, // Returns subnormal value + kValue.f16.negative.min, // Closest to returning 0 as possible + ...biasedRange(kValue.f16.negative.max, -11, 100), + ...biasedRange(kValue.f16.positive.min, 11, 100), + ...linearRange(12, 709, 10), // Overflows f16, but not f64 +]; + export const d = makeCaseCache('exp', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.expInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.expInterval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.expInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.expInterval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.expInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.expInterval); }, }); @@ -60,4 +76,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('exp'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp2.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp2.spec.js index bcc999b2253..59fe1646bef 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp2.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp2.spec.js @@ -11,7 +11,7 @@ Returns 2 raised to the power e (e.g. 2^e). Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; import { biasedRange, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; @@ -23,7 +23,7 @@ export const g = makeTestGroup(GPUTest); // floor(log2(max f32 value)) = 127, so exp2(127) will be within range of a f32, but exp2(128) will not // floor(ln(max f64 value)) = 1023, so exp2(1023) can be handled by the testing framework, but exp2(1024) will misbehave -const inputs = [ +const f32_inputs = [ 0, // Returns 1 by definition -128, // Returns subnormal value kValue.f32.negative.min, // Closest to returning 0 as possible @@ -32,12 +32,28 @@ const inputs = [ ...linearRange(128, 1023, 10), // Overflows f32, but not f64 ]; +// floor(log2(max f16 value)) = 15, so exp2(15) will be within range of a f16, but exp2(15) will not +const f16_inputs = [ + 0, // Returns 1 by definition + -16, // Returns subnormal value + kValue.f16.negative.min, // Closest to returning 0 as possible + ...biasedRange(kValue.f16.negative.max, -15, 100), + ...biasedRange(kValue.f16.positive.min, 15, 100), + ...linearRange(16, 1023, 10), // Overflows f16, but not f64 +]; + export const d = makeCaseCache('exp2', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.exp2Interval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.exp2Interval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.exp2Interval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.exp2Interval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.exp2Interval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.exp2Interval); }, }); @@ -60,4 +76,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('exp2'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/faceForward.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/faceForward.spec.js index 12247cf8830..125fd0ec2b4 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/faceForward.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/faceForward.spec.js @@ -10,9 +10,13 @@ Returns e1 if dot(e2,e3) is negative, and -e1 otherwise. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { anyOf } from '../../../../../util/compare.js'; -import { toVector, TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { toVector, TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { cartesianProduct, sparseVectorF32Range } from '../../../../../util/math.js'; +import { + cartesianProduct, + sparseVectorF32Range, + sparseVectorF16Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -42,7 +46,7 @@ function makeCase(kind, x, y, z, check) { y = y.map(fp.quantize); z = z.map(fp.quantize); - const results = FP.f32.faceForwardIntervals(x, y, z); + const results = FP[kind].faceForwardIntervals(x, y, z); if (check === 'finite' && results.some(r => r === undefined)) { return undefined; } @@ -74,65 +78,47 @@ function makeCase(kind, x, y, z, check) { function generateCases(kind, xs, ys, zs, check) { // Cannot use `cartesianProduct` here due to heterogeneous param types return cartesianProduct(xs, ys, zs) - .map(e => makeCase('f32', e[0], e[1], e[2], check)) + .map(e => makeCase(kind, e[0], e[1], e[2], check)) .filter(c => c !== undefined); } +// Cases: f32_vecN_[non_]const +const f32_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return generateCases( + 'f32', + sparseVectorF32Range(n), + sparseVectorF32Range(n), + sparseVectorF32Range(n), + nonConst ? 'unfiltered' : 'finite' + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_[non_]const +const f16_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return generateCases( + 'f16', + sparseVectorF16Range(n), + sparseVectorF16Range(n), + sparseVectorF16Range(n), + nonConst ? 'unfiltered' : 'finite' + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('faceForward', { - f32_vec2_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(2), - sparseVectorF32Range(2), - sparseVectorF32Range(2), - 'finite' - ); - }, - f32_vec2_non_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(2), - sparseVectorF32Range(2), - sparseVectorF32Range(2), - 'unfiltered' - ); - }, - f32_vec3_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(3), - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'finite' - ); - }, - f32_vec3_non_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(3), - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'unfiltered' - ); - }, - f32_vec4_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(4), - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'finite' - ); - }, - f32_vec4_non_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(4), - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'unfiltered' - ); - }, + ...f32_vec_cases, + ...f16_vec_cases, }); g.test('abstract_float') @@ -198,8 +184,68 @@ g.test('f32_vec4') ); }); -g.test('f16') - .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) - .unimplemented(); +g.test('f16_vec2') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec2s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run( + t, + builtin('faceForward'), + [TypeVec(2, TypeF16), TypeVec(2, TypeF16), TypeVec(2, TypeF16)], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run( + t, + builtin('faceForward'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16), TypeVec(3, TypeF16)], + TypeVec(3, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run( + t, + builtin('faceForward'), + [TypeVec(4, TypeF16), TypeVec(4, TypeF16), TypeVec(4, TypeF16)], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js index f556dba7883..c5d58bfb397 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js @@ -147,6 +147,9 @@ g.test('i32') // Zero { input: i32Bits(0b00000000000000000000000000000000), expected: i32(-1) }, + // Negative One + { input: i32Bits(0b11111111111111111111111111111111), expected: i32(-1) }, + // One { input: i32Bits(0b00000000000000000000000000000001), expected: i32(0) }, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js index 0d5c30230e1..edde8ce867e 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js @@ -10,9 +10,9 @@ Returns the floor of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -36,6 +36,7 @@ export const d = makeCaseCache('floor', { -1.0, -1.1, -1.9, + 0x80000000, // https://github.com/gpuweb/cts/issues/2766 ...fullF32Range(), ], @@ -43,6 +44,29 @@ export const d = makeCaseCache('floor', { FP.f32.floorInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // Small positive numbers + 0.1, + 0.9, + 1.0, + 1.1, + 1.9, + // Small negative numbers + -0.1, + -0.9, + -1.0, + -1.1, + -1.9, + 0x8000, // https://github.com/gpuweb/cts/issues/2766 + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.floorInterval + ); + }, }); g.test('abstract_float') @@ -64,4 +88,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('floor'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fma.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fma.spec.js index 735dd2fa29b..ee4e4ef8590 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fma.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fma.spec.js @@ -10,13 +10,13 @@ Returns e1 * e2 + e3. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeAbstractFloat } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseF32Range } from '../../../../../util/math.js'; +import { sparseF32Range, sparseF16Range, sparseF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -39,13 +39,52 @@ export const d = makeCaseCache('fma', { FP.f32.fmaInterval ); }, + f16_const: () => { + return FP.f16.generateScalarTripleToIntervalCases( + sparseF16Range(), + sparseF16Range(), + sparseF16Range(), + 'finite', + FP.f16.fmaInterval + ); + }, + f16_non_const: () => { + return FP.f16.generateScalarTripleToIntervalCases( + sparseF16Range(), + sparseF16Range(), + sparseF16Range(), + 'unfiltered', + FP.f16.fmaInterval + ); + }, + abstract: () => { + return FP.abstract.generateScalarTripleToIntervalCases( + sparseF64Range(), + sparseF64Range(), + sparseF64Range(), + 'finite', + FP.abstract.fmaInterval + ); + }, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('fma'), + [TypeAbstractFloat, TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -60,4 +99,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('fma'), [TypeF16, TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js index c8393c50f7d..f03da3bf0e6 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js @@ -11,9 +11,9 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -38,6 +38,7 @@ export const d = makeCaseCache('fract', { -2, // -2 -> 0 -1.11, // ~-1.11 -> ~0.89 -10.0001, // -10.0001 -> ~0.9999 + 0x80000000, // https://github.com/gpuweb/cts/issues/2766 ...fullF32Range(), ], @@ -45,6 +46,30 @@ export const d = makeCaseCache('fract', { FP.f32.fractInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + 0.5, // 0.5 -> 0.5 + 0.9, // ~0.9 -> ~0.9 + 1, // 1 -> 0 + 2, // 2 -> 0 + 1.11, // ~1.11 -> ~0.11 + 10.0078125, // 10.0078125 -> 0.0078125 + -0.1, // ~-0.1 -> ~0.9 + -0.5, // -0.5 -> 0.5 + -0.9, // ~-0.9 -> ~0.1 + -1, // -1 -> 0 + -2, // -2 -> 0 + -1.11, // ~-1.11 -> ~0.89 + -10.0078125, // -10.0078125 -> 0.9921875 + 658.5, // 658.5 -> 0.5 + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.fractInterval + ); + }, }); g.test('abstract_float') @@ -66,4 +91,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('fract'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/frexp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/frexp.spec.js index 68a570612f6..4c37f33f29b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/frexp.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/frexp.spec.js @@ -17,12 +17,20 @@ The magnitude of the significand is in the range of [0.5, 1.0) or 0. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { skipUndefined } from '../../../../../util/compare.js'; -import { f32, i32, toVector, TypeF32, TypeI32, TypeVec } from '../../../../../util/conversion.js'; +import { + i32, + toVector, + TypeF32, + TypeF16, + TypeI32, + TypeVec, +} from '../../../../../util/conversion.js'; +import { FP } from '../../../../../util/floating_point.js'; import { frexp, + fullF16Range, fullF32Range, - isSubnormalNumberF32, - quantizeToF32, + vectorF16Range, vectorF32Range, } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; @@ -40,72 +48,110 @@ function expBuilder() { return basicExpressionBuilder(value => `frexp(${value}).exp`); } -/* @returns a fract Case for a given vector input */ -function makeVectorCaseFract(v) { - v = v.map(quantizeToF32); - if (v.some(e => e !== 0 && isSubnormalNumberF32(e))) { - return { input: toVector(v, f32), expected: skipUndefined(undefined) }; +/* @returns a fract Case for a given scalar or vector input */ +function makeVectorCaseFract(v, trait) { + const fp = FP[trait]; + let toInput; + let toOutput; + if (v instanceof Array) { + // Input is vector + toInput = n => toVector(n, fp.scalarBuilder); + toOutput = n => toVector(n, fp.scalarBuilder); + } else { + // Input is scalar, also wrap it in an array. + v = [v]; + toInput = n => fp.scalarBuilder(n[0]); + toOutput = n => fp.scalarBuilder(n[0]); + } + + v = v.map(fp.quantize); + if (v.some(e => e !== 0 && fp.isSubnormal(e))) { + return { input: toInput(v), expected: skipUndefined(undefined) }; } const fs = v.map(e => { - return frexp(e).fract; + return frexp(e, trait).fract; }); - return { input: toVector(v, f32), expected: toVector(fs, f32) }; + return { input: toInput(v), expected: toOutput(fs) }; } -/* @returns an exp Case for a given vector input */ -function makeVectorCaseExp(v) { - v = v.map(quantizeToF32); - if (v.some(e => e !== 0 && isSubnormalNumberF32(e))) { - return { input: toVector(v, f32), expected: skipUndefined(undefined) }; +/* @returns an exp Case for a given scalar or vector input */ +function makeVectorCaseExp(v, trait) { + const fp = FP[trait]; + let toInput; + let toOutput; + if (v instanceof Array) { + // Input is vector + toInput = n => toVector(n, fp.scalarBuilder); + toOutput = n => toVector(n, i32); + } else { + // Input is scalar, also wrap it in an array. + v = [v]; + toInput = n => fp.scalarBuilder(n[0]); + toOutput = n => i32(n[0]); + } + + v = v.map(fp.quantize); + if (v.some(e => e !== 0 && fp.isSubnormal(e))) { + return { input: toInput(v), expected: skipUndefined(undefined) }; } const fs = v.map(e => { - return frexp(e).exp; + return frexp(e, trait).exp; }); - return { input: toVector(v, f32), expected: toVector(fs, i32) }; + return { input: toInput(v), expected: toOutput(fs) }; } export const d = makeCaseCache('frexp', { f32_fract: () => { - const makeCase = n => { - n = quantizeToF32(n); - if (n !== 0 && isSubnormalNumberF32(n)) { - return { input: f32(n), expected: skipUndefined(undefined) }; - } - return { input: f32(n), expected: f32(frexp(n).fract) }; - }; - return fullF32Range().map(makeCase); + return fullF32Range().map(v => makeVectorCaseFract(v, 'f32')); }, f32_exp: () => { - const makeCase = n => { - n = quantizeToF32(n); - if (n !== 0 && isSubnormalNumberF32(n)) { - return { input: f32(n), expected: skipUndefined(undefined) }; - } - return { input: f32(n), expected: i32(frexp(n).exp) }; - }; - return fullF32Range().map(makeCase); + return fullF32Range().map(v => makeVectorCaseExp(v, 'f32')); }, f32_vec2_fract: () => { - return vectorF32Range(2).map(makeVectorCaseFract); + return vectorF32Range(2).map(v => makeVectorCaseFract(v, 'f32')); }, f32_vec2_exp: () => { - return vectorF32Range(2).map(makeVectorCaseExp); + return vectorF32Range(2).map(v => makeVectorCaseExp(v, 'f32')); }, f32_vec3_fract: () => { - return vectorF32Range(3).map(makeVectorCaseFract); + return vectorF32Range(3).map(v => makeVectorCaseFract(v, 'f32')); }, f32_vec3_exp: () => { - return vectorF32Range(3).map(makeVectorCaseExp); + return vectorF32Range(3).map(v => makeVectorCaseExp(v, 'f32')); }, f32_vec4_fract: () => { - return vectorF32Range(4).map(makeVectorCaseFract); + return vectorF32Range(4).map(v => makeVectorCaseFract(v, 'f32')); }, f32_vec4_exp: () => { - return vectorF32Range(4).map(makeVectorCaseExp); + return vectorF32Range(4).map(v => makeVectorCaseExp(v, 'f32')); + }, + f16_fract: () => { + return fullF16Range().map(v => makeVectorCaseFract(v, 'f16')); + }, + f16_exp: () => { + return fullF16Range().map(v => makeVectorCaseExp(v, 'f16')); + }, + f16_vec2_fract: () => { + return vectorF16Range(2).map(v => makeVectorCaseFract(v, 'f16')); + }, + f16_vec2_exp: () => { + return vectorF16Range(2).map(v => makeVectorCaseExp(v, 'f16')); + }, + f16_vec3_fract: () => { + return vectorF16Range(3).map(v => makeVectorCaseFract(v, 'f16')); + }, + f16_vec3_exp: () => { + return vectorF16Range(3).map(v => makeVectorCaseExp(v, 'f16')); + }, + f16_vec4_fract: () => { + return vectorF16Range(4).map(v => makeVectorCaseFract(v, 'f16')); + }, + f16_vec4_exp: () => { + return vectorF16Range(4).map(v => makeVectorCaseExp(v, 'f16')); }, }); @@ -115,7 +161,7 @@ g.test('f32_fract') ` T is f32 -struct __frexp_result { +struct __frexp_result_f32 { fract : f32, // fract part exp : i32 // exponent part } @@ -133,7 +179,7 @@ g.test('f32_exp') ` T is f32 -struct __frexp_result { +struct __frexp_result_f32 { fract : f32, // fract part exp : i32 // exponent part } @@ -151,7 +197,7 @@ g.test('f32_vec2_fract') ` T is vec2 -struct __frexp_result { +struct __frexp_result_vec2_f32 { fract : vec2, // fract part exp : vec2 // exponent part } @@ -259,14 +305,20 @@ g.test('f16_fract') ` T is f16 -struct __frexp_result { +struct __frexp_result_f16 { fract : f16, // fract part exp : i32 // exponent part } ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_fract'); + await run(t, fractBuilder(), [TypeF16], TypeF16, t.params, cases); + }); g.test('f16_exp') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -274,14 +326,20 @@ g.test('f16_exp') ` T is f16 -struct __frexp_result { +struct __frexp_result_f16 { fract : f16, // fract part exp : i32 // exponent part } ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_exp'); + await run(t, expBuilder(), [TypeF16], TypeI32, t.params, cases); + }); g.test('f16_vec2_fract') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -289,14 +347,20 @@ g.test('f16_vec2_fract') ` T is vec2 -struct __frexp_result { +struct __frexp_result_vec2_f16 { fract : vec2, // fract part exp : vec2 // exponent part } ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_vec2_fract'); + await run(t, fractBuilder(), [TypeVec(2, TypeF16)], TypeVec(2, TypeF16), t.params, cases); + }); g.test('f16_vec2_exp') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -311,7 +375,13 @@ struct __frexp_result_vec2_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_vec2_exp'); + await run(t, expBuilder(), [TypeVec(2, TypeF16)], TypeVec(2, TypeI32), t.params, cases); + }); g.test('f16_vec3_fract') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -326,7 +396,13 @@ struct __frexp_result_vec3_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_vec3_fract'); + await run(t, fractBuilder(), [TypeVec(3, TypeF16)], TypeVec(3, TypeF16), t.params, cases); + }); g.test('f16_vec3_exp') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -341,7 +417,13 @@ struct __frexp_result_vec3_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_vec3_exp'); + await run(t, expBuilder(), [TypeVec(3, TypeF16)], TypeVec(3, TypeI32), t.params, cases); + }); g.test('f16_vec4_fract') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -356,7 +438,13 @@ struct __frexp_result_vec4_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_vec4_fract'); + await run(t, fractBuilder(), [TypeVec(4, TypeF16)], TypeVec(4, TypeF16), t.params, cases); + }); g.test('f16_vec4_exp') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -371,4 +459,10 @@ struct __frexp_result_vec4_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16_vec4_exp'); + await run(t, expBuilder(), [TypeVec(4, TypeF16)], TypeVec(4, TypeI32), t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js index f2944c67923..74ef5c1c03c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js @@ -11,7 +11,7 @@ Returns the reciprocal of sqrt(e). Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; import { biasedRange, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; @@ -35,6 +35,19 @@ export const d = makeCaseCache('inverseSqrt', { FP.f32.inverseSqrtInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // 0 < x <= 1 linearly spread + ...linearRange(kValue.f16.positive.min, 1, 100), + // 1 <= x < 2^15, biased towards 1 + ...biasedRange(1, 2 ** 15, 1000), + ], + + 'unfiltered', + FP.f16.inverseSqrtInterval + ); + }, }); g.test('abstract_float') @@ -56,4 +69,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('inverseSqrt'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js index a33205c2a7c..49a846c8587 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js @@ -14,12 +14,15 @@ I is K or vecN, where Returns e1 * 2^e2. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { assert } from '../../../../../../common/util/util.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { i32, TypeF32, TypeI32 } from '../../../../../util/conversion.js'; +import { anyOf } from '../../../../../util/compare.js'; +import { i32, TypeF32, TypeF16, TypeI32 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; import { biasedRange, fullF32Range, + fullF16Range, fullI32Range, quantizeToI32, } from '../../../../../util/math.js'; @@ -30,35 +33,55 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); -function makeCaseF32(e1, e2) { - // Due to the heterogeneous types of the params to ldexp (f32 & i32), - // makeBinaryToF32IntervalCase cannot be used here. - e1 = FP.f32.quantize(e1); +const bias = { + f32: 127, + f16: 15, +}; + +// ldexpInterval's return interval doesn't cover the flush-to-zero cases when e2 + bias <= 0, thus +// special examination is required. +// See the comment block on ldexpInterval for more details +// e2 is an integer (i32) while e1 is float. +const makeCase = (trait, e1, e2) => { + const FPTrait = FP[trait]; + e1 = FPTrait.quantize(e1); + // e2 should be in i32 range for the convinience. + assert(-2147483648 <= e2 && e2 <= 2147483647, 'e2 should be in i32 range'); e2 = quantizeToI32(e2); - const expected = FP.f32.ldexpInterval(e1, e2); - return { input: [FP.f32.scalarBuilder(e1), i32(e2)], expected }; -} + + const expected = FPTrait.ldexpInterval(e1, e2); + + // Result may be zero if e2 + bias <= 0 + if (e2 + bias[trait] <= 0) { + return { + input: [FPTrait.scalarBuilder(e1), i32(e2)], + expected: anyOf(expected, FPTrait.constants().zeroInterval), + }; + } + + return { input: [FPTrait.scalarBuilder(e1), i32(e2)], expected }; +}; export const d = makeCaseCache('ldexp', { f32_non_const: () => { - const cases = []; - fullF32Range().forEach(e1 => { - fullI32Range().forEach(e2 => { - cases.push(makeCaseF32(e1, e2)); - }); - }); - return cases; + return fullF32Range().flatMap(e1 => fullI32Range().map(e2 => makeCase('f32', e1, e2))); }, f32_const: () => { - const cases = []; - fullF32Range().forEach(e1 => { - biasedRange(-128, 128, 10).forEach(e2 => { - if (FP.f32.isFinite(e1 * Math.pow(2, e2))) { - cases.push(makeCaseF32(e1, e2)); - } - }); - }); - return cases; + return fullF32Range().flatMap(e1 => + biasedRange(-bias.f32 - 10, bias.f32 + 1, 10).flatMap(e2 => + FP.f32.isFinite(e1 * 2 ** quantizeToI32(e2)) ? makeCase('f32', e1, e2) : [] + ) + ); + }, + f16_non_const: () => { + return fullF16Range().flatMap(e1 => fullI32Range().map(e2 => makeCase('f16', e1, e2))); + }, + f16_const: () => { + return fullF16Range().flatMap(e1 => + biasedRange(-bias.f16 - 10, bias.f16 + 1, 10).flatMap(e2 => + FP.f16.isFinite(e1 * 2 ** quantizeToI32(e2)) ? makeCase('f16', e1, e2) : [] + ) + ); }, }); @@ -84,4 +107,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('ldexp'), [TypeF16, TypeI32], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/length.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/length.spec.js index 3a2dedbb5dc..f82db383cdb 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/length.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/length.spec.js @@ -10,9 +10,14 @@ Returns the length of e (e.g. abs(e) if T is a scalar, or sqrt(e[0]^2 + e[1]^2 + `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, vectorF32Range } from '../../../../../util/math.js'; +import { + fullF32Range, + fullF16Range, + vectorF32Range, + vectorF16Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -20,6 +25,36 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_vecN_[non_]const +const f32_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorToIntervalCases( + vectorF32Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f32.lengthInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_[non_]const +const f16_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorToIntervalCases( + vectorF16Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f16.lengthInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('length', { f32: () => { return FP.f32.generateScalarToIntervalCases( @@ -28,36 +63,15 @@ export const d = makeCaseCache('length', { FP.f32.lengthInterval ); }, - f32_vec2_const: () => { - return FP.f32.generateVectorToIntervalCases(vectorF32Range(2), 'finite', FP.f32.lengthInterval); - }, - f32_vec2_non_const: () => { - return FP.f32.generateVectorToIntervalCases( - vectorF32Range(2), + ...f32_vec_cases, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + fullF16Range(), 'unfiltered', - FP.f32.lengthInterval - ); - }, - f32_vec3_const: () => { - return FP.f32.generateVectorToIntervalCases(vectorF32Range(3), 'finite', FP.f32.lengthInterval); - }, - f32_vec3_non_const: () => { - return FP.f32.generateVectorToIntervalCases( - vectorF32Range(3), - 'unfiltered', - FP.f32.lengthInterval - ); - }, - f32_vec4_const: () => { - return FP.f32.generateVectorToIntervalCases(vectorF32Range(4), 'finite', FP.f32.lengthInterval); - }, - f32_vec4_non_const: () => { - return FP.f32.generateVectorToIntervalCases( - vectorF32Range(4), - 'unfiltered', - FP.f32.lengthInterval + FP.f16.lengthInterval ); }, + ...f16_vec_cases, }); g.test('abstract_float') @@ -114,5 +128,56 @@ g.test('f32_vec4') g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('length'), [TypeF16], TypeF16, t.params, cases); + }); + +g.test('f16_vec2') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec2s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run(t, builtin('length'), [TypeVec(2, TypeF16)], TypeF16, t.params, cases); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run(t, builtin('length'), [TypeVec(3, TypeF16)], TypeF16, t.params, cases); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run(t, builtin('length'), [TypeVec(4, TypeF16)], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js index bf75c9b8481..25f18610867 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js @@ -11,9 +11,9 @@ Returns the natural logarithm of e. Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { biasedRange, fullF32Range, linearRange } from '../../../../../util/math.js'; +import { biasedRange, fullF32Range, fullF16Range, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -22,19 +22,32 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); // log's accuracy is defined in three regions { [0, 0.5), [0.5, 2.0], (2.0, +∞] } -const inputs = [ +const f32_inputs = [ ...linearRange(kValue.f32.positive.min, 0.5, 20), ...linearRange(0.5, 2.0, 20), ...biasedRange(2.0, 2 ** 32, 1000), ...fullF32Range(), ]; +const f16_inputs = [ + ...linearRange(kValue.f16.positive.min, 0.5, 20), + ...linearRange(0.5, 2.0, 20), + ...biasedRange(2.0, 2 ** 32, 1000), + ...fullF16Range(), +]; + export const d = makeCaseCache('log', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.logInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.logInterval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.logInterval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.logInterval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.logInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.logInterval); }, }); @@ -63,4 +76,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('log'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js index ca77d645896..e8ab356cf77 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js @@ -11,9 +11,9 @@ Returns the base-2 logarithm of e. Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { kValue } from '../../../../../util/constants.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { biasedRange, fullF32Range, linearRange } from '../../../../../util/math.js'; +import { biasedRange, fullF32Range, fullF16Range, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -22,19 +22,32 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); // log2's accuracy is defined in three regions { [0, 0.5), [0.5, 2.0], (2.0, +∞] } -const inputs = [ +const f32_inputs = [ ...linearRange(kValue.f32.positive.min, 0.5, 20), ...linearRange(0.5, 2.0, 20), ...biasedRange(2.0, 2 ** 32, 1000), ...fullF32Range(), ]; +const f16_inputs = [ + ...linearRange(kValue.f16.positive.min, 0.5, 20), + ...linearRange(0.5, 2.0, 20), + ...biasedRange(2.0, 2 ** 32, 1000), + ...fullF16Range(), +]; + export const d = makeCaseCache('log2', { f32_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'finite', FP.f32.log2Interval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'finite', FP.f32.log2Interval); }, f32_non_const: () => { - return FP.f32.generateScalarToIntervalCases(inputs, 'unfiltered', FP.f32.log2Interval); + return FP.f32.generateScalarToIntervalCases(f32_inputs, 'unfiltered', FP.f32.log2Interval); + }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'finite', FP.f16.log2Interval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(f16_inputs, 'unfiltered', FP.f16.log2Interval); }, }); @@ -63,4 +76,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('log2'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js index ea513fab036..e7e7250fe51 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js @@ -19,13 +19,21 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { i32, TypeF32, TypeI32, TypeU32, u32 } from '../../../../../util/conversion.js'; +import { + i32, + TypeF32, + TypeF16, + TypeI32, + TypeU32, + u32, + TypeAbstractFloat, +} from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, sparseF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; /** Generate set of max test cases from list of interesting values */ function generateTestCases(values, makeCase) { @@ -49,6 +57,22 @@ export const d = makeCaseCache('max', { FP.f32.maxInterval ); }, + f16: () => { + return FP.f16.generateScalarPairToIntervalCases( + fullF16Range(), + fullF16Range(), + 'unfiltered', + FP.f16.maxInterval + ); + }, + abstract: () => { + return FP.abstract.generateScalarPairToIntervalCases( + sparseF64Range(), + sparseF64Range(), + 'unfiltered', + FP.abstract.maxInterval + ); + }, }); g.test('abstract_int') @@ -90,8 +114,20 @@ g.test('i32') g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('max'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -106,4 +142,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('max'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js index 4ffbdf5c9d8..814211697af 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js @@ -18,13 +18,21 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { i32, TypeF32, TypeI32, TypeU32, u32 } from '../../../../../util/conversion.js'; +import { + i32, + TypeF32, + TypeF16, + TypeI32, + TypeU32, + u32, + TypeAbstractFloat, +} from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, sparseF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -37,6 +45,22 @@ export const d = makeCaseCache('min', { FP.f32.minInterval ); }, + f16: () => { + return FP.f16.generateScalarPairToIntervalCases( + fullF16Range(), + fullF16Range(), + 'unfiltered', + FP.f16.minInterval + ); + }, + abstract: () => { + return FP.abstract.generateScalarPairToIntervalCases( + sparseF64Range(), + sparseF64Range(), + 'unfiltered', + FP.abstract.minInterval + ); + }, }); /** Generate set of min test cases from list of interesting values */ @@ -89,8 +113,20 @@ g.test('i32') g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('min'), + [TypeAbstractFloat, TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -105,4 +141,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('min'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/mix.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/mix.spec.js index dba656fc558..5f58060330b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/mix.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/mix.spec.js @@ -17,9 +17,14 @@ Same as mix(e1,e2,T2(e3)). `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeVec, TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseF32Range } from '../../../../../util/math.js'; +import { + sparseF32Range, + sparseF16Range, + sparseVectorF32Range, + sparseVectorF16Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -27,6 +32,40 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_vecN_scalar_[non_]const +const f32_vec_scalar_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorPairScalarToVectorComponentWiseCase( + sparseVectorF32Range(n), + sparseVectorF32Range(n), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite', + ...FP.f32.mixIntervals + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_scalar_[non_]const +const f16_vec_scalar_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_scalar_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorPairScalarToVectorComponentWiseCase( + sparseVectorF16Range(n), + sparseVectorF16Range(n), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite', + ...FP.f16.mixIntervals + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('mix', { f32_const: () => { return FP.f32.generateScalarTripleToIntervalCases( @@ -46,15 +85,53 @@ export const d = makeCaseCache('mix', { ...FP.f32.mixIntervals ); }, + ...f32_vec_scalar_cases, + f16_const: () => { + return FP.f16.generateScalarTripleToIntervalCases( + sparseF16Range(), + sparseF16Range(), + sparseF16Range(), + 'finite', + ...FP.f16.mixIntervals + ); + }, + f16_non_const: () => { + return FP.f16.generateScalarTripleToIntervalCases( + sparseF16Range(), + sparseF16Range(), + sparseF16Range(), + 'unfiltered', + ...FP.f16.mixIntervals + ); + }, + ...f16_vec_scalar_cases, }); -g.test('matching_abstract_float') +g.test('abstract_float_matching') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`abstract float tests with matching params`) + .desc(`abstract_float test with matching third param`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) .unimplemented(); -g.test('matching_f32') +g.test('abstract_float_nonmatching_vec2') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`abstract_float tests with two vec2 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .unimplemented(); + +g.test('abstract_float_nonmatching_vec3') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`abstract_float tests with two vec3 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .unimplemented(); + +g.test('abstract_float_nonmatching_vec4') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`abstract_float tests with two vec4 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .unimplemented(); + +g.test('f32_matching') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f32 test with matching third param`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) @@ -63,26 +140,137 @@ g.test('matching_f32') await run(t, builtin('mix'), [TypeF32, TypeF32, TypeF32], TypeF32, t.params, cases); }); -g.test('matching_f16') +g.test('f32_nonmatching_vec2') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f16 tests with matching third param`) + .desc(`f32 tests with two vec2 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f32_vec2_scalar_const' : 'f32_vec2_scalar_non_const' + ); + + await run( + t, + builtin('mix'), + [TypeVec(2, TypeF32), TypeVec(2, TypeF32), TypeF32], + TypeVec(2, TypeF32), + t.params, + cases + ); + }); + +g.test('f32_nonmatching_vec3') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`f32 tests with two vec3 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f32_vec3_scalar_const' : 'f32_vec3_scalar_non_const' + ); + + await run( + t, + builtin('mix'), + [TypeVec(3, TypeF32), TypeVec(3, TypeF32), TypeF32], + TypeVec(3, TypeF32), + t.params, + cases + ); + }); + +g.test('f32_nonmatching_vec4') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`f32 tests with two vec4 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f32_vec4_scalar_const' : 'f32_vec4_scalar_non_const' + ); + + await run( + t, + builtin('mix'), + [TypeVec(4, TypeF32), TypeVec(4, TypeF32), TypeF32], + TypeVec(4, TypeF32), + t.params, + cases + ); + }); + +g.test('f16_matching') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`f16 test with matching third param`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('mix'), [TypeF16, TypeF16, TypeF16], TypeF16, t.params, cases); + }); -g.test('nonmatching_abstract_float') +g.test('f16_nonmatching_vec2') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`abstract float tests with vector params and scalar third param`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) - .unimplemented(); + .desc(`f16 tests with two vec2 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_scalar_const' : 'f16_vec2_scalar_non_const' + ); -g.test('nonmatching_f32') - .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f32 tests with vector params and scalar third param`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) - .unimplemented(); + await run( + t, + builtin('mix'), + [TypeVec(2, TypeF16), TypeVec(2, TypeF16), TypeF16], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); -g.test('monmatching_f16') +g.test('f16_nonmatching_vec3') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f16 tests with vector params and scalar third param`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) - .unimplemented(); + .desc(`f16 tests with two vec3 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_scalar_const' : 'f16_vec3_scalar_non_const' + ); + + await run( + t, + builtin('mix'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16), TypeF16], + TypeVec(3, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_nonmatching_vec4') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc(`f16 tests with two vec4 params and scalar third param`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_scalar_const' : 'f16_vec4_scalar_non_const' + ); + + await run( + t, + builtin('mix'), + [TypeVec(4, TypeF16), TypeVec(4, TypeF16), TypeF16], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/modf.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/modf.spec.js index 972283ee44a..190c02ec86e 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/modf.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/modf.spec.js @@ -3,13 +3,13 @@ **/ export const description = ` Execution tests for the 'modf' builtin function -T is f32 or f16 +T is f32 or f16 or AbstractFloat @const fn modf(e:T) -> result_struct Splits |e| into fractional and whole number parts. The whole part is (|e| % 1.0), and the fractional part is |e| minus the whole part. Returns the result_struct for the given type. -S is f32 or f16 +S is f32 or f16 or AbstractFloat T is vecN @const fn modf(e:T) -> result_struct Splits the components of |e| into fractional and whole number parts. @@ -19,11 +19,30 @@ Returns the result_struct for the given type. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { toVector, TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { + toVector, + TypeAbstractFloat, + TypeF16, + TypeF32, + TypeVec, +} from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, vectorF32Range } from '../../../../../util/math.js'; +import { + fullF16Range, + fullF32Range, + fullF64Range, + vectorF16Range, + vectorF32Range, + vectorF64Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, basicExpressionBuilder, run } from '../../expression.js'; +import { + abstractFloatShaderBuilder, + allInputSources, + basicExpressionBuilder, + onlyConstInputSource, + run, +} from '../../expression.js'; export const g = makeTestGroup(GPUTest); @@ -37,6 +56,34 @@ function fractBuilder() { return basicExpressionBuilder(value => `modf(${value}).fract`); } +/** @returns an ShaderBuilder that evaluates modf and returns .whole from the result structure for AbstractFloats */ +function abstractWholeBuilder() { + return abstractFloatShaderBuilder(value => `modf(${value}).whole`); +} + +/** @returns an ShaderBuilder that evaluates modf and returns .fract from the result structure for AbstractFloats */ +function abstractFractBuilder() { + return abstractFloatShaderBuilder(value => `modf(${value}).fract`); +} + +/** @returns a fract Case for a scalar vector input */ +function makeScalarCaseFract(kind, n) { + const fp = FP[kind]; + n = fp.quantize(n); + const result = fp.modfInterval(n).fract; + + return { input: fp.scalarBuilder(n), expected: result }; +} + +/** @returns a whole Case for a scalar vector input */ +function makeScalarCaseWhole(kind, n) { + const fp = FP[kind]; + n = fp.quantize(n); + const result = fp.modfInterval(n).whole; + + return { input: fp.scalarBuilder(n), expected: result }; +} + /** @returns a fract Case for a given vector input */ function makeVectorCaseFract(kind, v) { const fp = FP[kind]; @@ -59,39 +106,59 @@ function makeVectorCaseWhole(kind, v) { return { input: toVector(v, fp.scalarBuilder), expected: ws }; } +const scalar_range = { + f32: fullF32Range(), + f16: fullF16Range(), + abstract: fullF64Range(), +}; + +const vector_range = { + f32: { + 2: vectorF32Range(2), + 3: vectorF32Range(3), + 4: vectorF32Range(4), + }, + f16: { + 2: vectorF16Range(2), + 3: vectorF16Range(3), + 4: vectorF16Range(4), + }, + abstract: { + 2: vectorF64Range(2), + 3: vectorF64Range(3), + 4: vectorF64Range(4), + }, +}; + +// Cases: [f32|f16|abstract]_[fract|whole] +const scalar_cases = ['f32', 'f16', 'abstract'] + .flatMap(kind => + ['whole', 'fract'].map(portion => ({ + [`${kind}_${portion}`]: () => { + const makeCase = portion === 'whole' ? makeScalarCaseWhole : makeScalarCaseFract; + return scalar_range[kind].map(makeCase.bind(null, kind)); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: [f32|f16|abstract]_vecN_[fract|whole] +const vec_cases = ['f32', 'f16', 'abstract'] + .flatMap(kind => + [2, 3, 4].flatMap(n => + ['whole', 'fract'].map(portion => ({ + [`${kind}_vec${n}_${portion}`]: () => { + const makeCase = portion === 'whole' ? makeVectorCaseWhole : makeVectorCaseFract; + return vector_range[kind][n].map(makeCase.bind(null, kind)); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('modf', { - f32_fract: () => { - const makeCase = n => { - n = FP.f32.quantize(n); - return { input: FP.f32.scalarBuilder(n), expected: FP.f32.modfInterval(n).fract }; - }; - return fullF32Range().map(makeCase); - }, - f32_whole: () => { - const makeCase = n => { - n = FP.f32.quantize(n); - return { input: FP.f32.scalarBuilder(n), expected: FP.f32.modfInterval(n).whole }; - }; - return fullF32Range().map(makeCase); - }, - f32_vec2_fract: () => { - return vectorF32Range(2).map(makeVectorCaseFract.bind(null, 'f32')); - }, - f32_vec2_whole: () => { - return vectorF32Range(2).map(makeVectorCaseWhole.bind(null, 'f32')); - }, - f32_vec3_fract: () => { - return vectorF32Range(3).map(makeVectorCaseFract.bind(null, 'f32')); - }, - f32_vec3_whole: () => { - return vectorF32Range(3).map(makeVectorCaseWhole.bind(null, 'f32')); - }, - f32_vec4_fract: () => { - return vectorF32Range(4).map(makeVectorCaseFract.bind(null, 'f32')); - }, - f32_vec4_whole: () => { - return vectorF32Range(4).map(makeVectorCaseWhole.bind(null, 'f32')); - }, + ...scalar_cases, + ...vec_cases, }); g.test('f32_fract') @@ -251,7 +318,13 @@ struct __modf_result_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_fract'); + await run(t, fractBuilder(), [TypeF16], TypeF16, t.params, cases); + }); g.test('f16_whole') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -266,7 +339,13 @@ struct __modf_result_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_whole'); + await run(t, wholeBuilder(), [TypeF16], TypeF16, t.params, cases); + }); g.test('f16_vec2_fract') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -281,7 +360,13 @@ struct __modf_result_vec2_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_vec2_fract'); + await run(t, fractBuilder(), [TypeVec(2, TypeF16)], TypeVec(2, TypeF16), t.params, cases); + }); g.test('f16_vec2_whole') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -296,7 +381,13 @@ struct __modf_result_vec2_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_vec2_whole'); + await run(t, wholeBuilder(), [TypeVec(2, TypeF16)], TypeVec(2, TypeF16), t.params, cases); + }); g.test('f16_vec3_fract') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -311,7 +402,13 @@ struct __modf_result_vec3_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_vec3_fract'); + await run(t, fractBuilder(), [TypeVec(3, TypeF16)], TypeVec(3, TypeF16), t.params, cases); + }); g.test('f16_vec3_whole') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -326,7 +423,13 @@ struct __modf_result_vec3_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_vec3_whole'); + await run(t, wholeBuilder(), [TypeVec(3, TypeF16)], TypeVec(3, TypeF16), t.params, cases); + }); g.test('f16_vec4_fract') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -341,7 +444,13 @@ struct __modf_result_vec4_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_vec4_fract'); + await run(t, fractBuilder(), [TypeVec(4, TypeF16)], TypeVec(4, TypeF16), t.params, cases); + }); g.test('f16_vec4_whole') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -356,4 +465,196 @@ struct __modf_result_vec4_f16 { ` ) .params(u => u.combine('inputSource', allInputSources)) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16_vec4_whole'); + await run(t, wholeBuilder(), [TypeVec(4, TypeF16)], TypeVec(4, TypeF16), t.params, cases); + }); + +g.test('abstract_fract') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is AbstractFloat + +struct __modf_result_abstract { + fract : AbstractFloat, // fractional part + whole : AbstractFloat // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_fract'); + await run(t, abstractFractBuilder(), [TypeAbstractFloat], TypeAbstractFloat, t.params, cases); + }); + +g.test('abstract_whole') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is AbstractFloat + +struct __modf_result_abstract { + fract : AbstractFloat, // fractional part + whole : AbstractFloat // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_whole'); + await run(t, abstractWholeBuilder(), [TypeAbstractFloat], TypeAbstractFloat, t.params, cases); + }); + +g.test('abstract_vec2_fract') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is vec2 + +struct __modf_result_vec2_abstract { + fract : vec2, // fractional part + whole : vec2 // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_vec2_fract'); + await run( + t, + abstractFractBuilder(), + [TypeVec(2, TypeAbstractFloat)], + TypeVec(2, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('abstract_vec2_whole') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is vec2 + +struct __modf_result_vec2_abstract { + fract : vec2, // fractional part + whole : vec2 // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_vec2_whole'); + await run( + t, + abstractWholeBuilder(), + [TypeVec(2, TypeAbstractFloat)], + TypeVec(2, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('abstract_vec3_fract') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is vec3 + +struct __modf_result_vec3_abstract { + fract : vec3, // fractional part + whole : vec3 // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_vec3_fract'); + await run( + t, + abstractFractBuilder(), + [TypeVec(3, TypeAbstractFloat)], + TypeVec(3, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('abstract_vec3_whole') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is vec3 + +struct __modf_result_vec3_abstract { + fract : vec3, // fractional part + whole : vec3 // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_vec3_whole'); + await run( + t, + abstractWholeBuilder(), + [TypeVec(3, TypeAbstractFloat)], + TypeVec(3, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('abstract_vec4_fract') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is vec4 + +struct __modf_result_vec4_abstract { + fract : vec4, // fractional part + whole : vec4 // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_vec4_fract'); + await run( + t, + abstractFractBuilder(), + [TypeVec(4, TypeAbstractFloat)], + TypeVec(4, TypeAbstractFloat), + t.params, + cases + ); + }); + +g.test('abstract_vec4_whole') + .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') + .desc( + ` +T is vec4 + +struct __modf_result_vec4_abstract { + fract : vec4, // fractional part + whole : vec4 // whole part +} +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract_vec4_whole'); + await run( + t, + abstractWholeBuilder(), + [TypeVec(4, TypeAbstractFloat)], + TypeVec(4, TypeAbstractFloat), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/normalize.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/normalize.spec.js index 5cb5b9170cf..418e7065856 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/normalize.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/normalize.spec.js @@ -9,9 +9,9 @@ Returns a unit vector in the same direction as e. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { vectorF32Range } from '../../../../../util/math.js'; +import { vectorF32Range, vectorF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -19,49 +19,39 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_vecN_[non_]const +const f32_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorToVectorCases( + vectorF32Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f32.normalizeInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_[non_]const +const f16_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorToVectorCases( + vectorF16Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f16.normalizeInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('normalize', { - f32_vec2_const: () => { - return FP.f32.generateVectorToVectorCases( - vectorF32Range(2), - 'finite', - FP.f32.normalizeInterval - ); - }, - f32_vec2_non_const: () => { - return FP.f32.generateVectorToVectorCases( - vectorF32Range(2), - 'unfiltered', - FP.f32.normalizeInterval - ); - }, - f32_vec3_const: () => { - return FP.f32.generateVectorToVectorCases( - vectorF32Range(3), - 'finite', - FP.f32.normalizeInterval - ); - }, - f32_vec3_non_const: () => { - return FP.f32.generateVectorToVectorCases( - vectorF32Range(3), - 'unfiltered', - FP.f32.normalizeInterval - ); - }, - f32_vec4_const: () => { - return FP.f32.generateVectorToVectorCases( - vectorF32Range(4), - 'finite', - FP.f32.normalizeInterval - ); - }, - f32_vec4_non_const: () => { - return FP.f32.generateVectorToVectorCases( - vectorF32Range(4), - 'unfiltered', - FP.f32.normalizeInterval - ); - }, + ...f32_vec_cases, + ...f16_vec_cases, }); g.test('abstract_float') @@ -106,8 +96,47 @@ g.test('f32_vec4') await run(t, builtin('normalize'), [TypeVec(4, TypeF32)], TypeVec(4, TypeF32), t.params, cases); }); -g.test('f16') - .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); +g.test('f16_vec2') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec2s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run(t, builtin('normalize'), [TypeVec(2, TypeF16)], TypeVec(2, TypeF16), t.params, cases); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run(t, builtin('normalize'), [TypeVec(3, TypeF16)], TypeVec(3, TypeF16), t.params, cases); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run(t, builtin('normalize'), [TypeVec(4, TypeF16)], TypeVec(4, TypeF16), t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pow.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pow.spec.js index dfb92674467..29ebde32908 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pow.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pow.spec.js @@ -10,9 +10,9 @@ Returns e1 raised to the power e2. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -37,6 +37,22 @@ export const d = makeCaseCache('pow', { FP.f32.powInterval ); }, + f16_const: () => { + return FP.f16.generateScalarPairToIntervalCases( + fullF16Range(), + fullF16Range(), + 'finite', + FP.f16.powInterval + ); + }, + f16_non_const: () => { + return FP.f16.generateScalarPairToIntervalCases( + fullF16Range(), + fullF16Range(), + 'unfiltered', + FP.f16.powInterval + ); + }, }); g.test('abstract_float') @@ -58,4 +74,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('pow'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/quantizeToF16.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/quantizeToF16.spec.js index bad11d7fd65..d0f37bd0479 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/quantizeToF16.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/quantizeToF16.spec.js @@ -28,10 +28,10 @@ export const d = makeCaseCache('quantizeToF16', { [ kValue.f16.negative.min, kValue.f16.negative.max, - kValue.f16.subnormal.negative.min, - kValue.f16.subnormal.negative.max, - kValue.f16.subnormal.positive.min, - kValue.f16.subnormal.positive.max, + kValue.f16.negative.subnormal.min, + kValue.f16.negative.subnormal.max, + kValue.f16.positive.subnormal.min, + kValue.f16.positive.subnormal.max, kValue.f16.positive.min, kValue.f16.positive.max, ...fullF16Range(), @@ -46,10 +46,10 @@ export const d = makeCaseCache('quantizeToF16', { [ kValue.f16.negative.min, kValue.f16.negative.max, - kValue.f16.subnormal.negative.min, - kValue.f16.subnormal.negative.max, - kValue.f16.subnormal.positive.min, - kValue.f16.subnormal.positive.max, + kValue.f16.negative.subnormal.min, + kValue.f16.negative.subnormal.max, + kValue.f16.positive.subnormal.min, + kValue.f16.positive.subnormal.max, kValue.f16.positive.min, kValue.f16.positive.max, ...fullF32Range(), diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/radians.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/radians.spec.js index fa888795c1d..3da132557e0 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/radians.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/radians.spec.js @@ -11,13 +11,13 @@ Component-wise when T is a vector `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeAbstractFloat, TypeF16, TypeF32 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF16Range, fullF32Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -29,13 +29,39 @@ export const d = makeCaseCache('radians', { FP.f32.radiansInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + fullF16Range(), + 'unfiltered', + FP.f16.radiansInterval + ); + }, + abstract: () => { + return FP.abstract.generateScalarToIntervalCases( + fullF16Range(), + 'unfiltered', + FP.abstract.radiansInterval + ); + }, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('radians'), + [TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -50,4 +76,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('radians'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reflect.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reflect.spec.js index 2fe30f7ca2a..9d93cfd7b5b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reflect.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reflect.spec.js @@ -10,9 +10,9 @@ direction e1-2*dot(e2,e1)*e2. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseVectorF32Range } from '../../../../../util/math.js'; +import { sparseVectorF32Range, sparseVectorF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -20,55 +20,41 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_vecN_[non_]const +const f32_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateVectorPairToVectorCases( + sparseVectorF32Range(n), + sparseVectorF32Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f32.reflectInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_[non_]const +const f16_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateVectorPairToVectorCases( + sparseVectorF16Range(n), + sparseVectorF16Range(n), + nonConst ? 'unfiltered' : 'finite', + FP.f16.reflectInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('reflect', { - f32_vec2_const: () => { - return FP.f32.generateVectorPairToVectorCases( - sparseVectorF32Range(2), - sparseVectorF32Range(2), - 'finite', - FP.f32.reflectInterval - ); - }, - f32_vec2_non_const: () => { - return FP.f32.generateVectorPairToVectorCases( - sparseVectorF32Range(2), - sparseVectorF32Range(2), - 'unfiltered', - FP.f32.reflectInterval - ); - }, - f32_vec3_const: () => { - return FP.f32.generateVectorPairToVectorCases( - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'finite', - FP.f32.reflectInterval - ); - }, - f32_vec3_non_const: () => { - return FP.f32.generateVectorPairToVectorCases( - sparseVectorF32Range(3), - sparseVectorF32Range(3), - 'unfiltered', - FP.f32.reflectInterval - ); - }, - f32_vec4_const: () => { - return FP.f32.generateVectorPairToVectorCases( - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'finite', - FP.f32.reflectInterval - ); - }, - f32_vec4_non_const: () => { - return FP.f32.generateVectorPairToVectorCases( - sparseVectorF32Range(4), - sparseVectorF32Range(4), - 'unfiltered', - FP.f32.reflectInterval - ); - }, + ...f32_vec_cases, + ...f16_vec_cases, }); g.test('abstract_float') @@ -134,8 +120,68 @@ g.test('f32_vec4') ); }); -g.test('f16') - .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) - .unimplemented(); +g.test('f16_vec2') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec2s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run( + t, + builtin('reflect'), + [TypeVec(2, TypeF16), TypeVec(2, TypeF16)], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run( + t, + builtin('reflect'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16)], + TypeVec(3, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run( + t, + builtin('reflect'), + [TypeVec(4, TypeF16), TypeVec(4, TypeF16)], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/refract.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/refract.spec.js index 03f1708da3e..53e77288d00 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/refract.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/refract.spec.js @@ -13,9 +13,14 @@ vector e3*e1- (e3* dot(e2,e1) + sqrt(k)) *e2. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { toVector, TypeF32, TypeVec } from '../../../../../util/conversion.js'; +import { toVector, TypeF32, TypeF16, TypeVec } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseVectorF32Range, sparseF32Range } from '../../../../../util/math.js'; +import { + sparseVectorF32Range, + sparseVectorF16Range, + sparseF32Range, + sparseF16Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -66,68 +71,50 @@ function generateCases(kind, param_is, param_ss, param_rs, check) { .flatMap(i => { return param_ss.flatMap(s => { return param_rs.map(r => { - return makeCase('f32', i, s, r, check); + return makeCase(kind, i, s, r, check); }); }); }) .filter(c => c !== undefined); } +// Cases: f32_vecN_[non_]const +const f32_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f32_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return generateCases( + 'f32', + sparseVectorF32Range(n), + sparseVectorF32Range(n), + sparseF32Range(), + nonConst ? 'unfiltered' : 'finite' + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_vecN_[non_]const +const f16_vec_cases = [2, 3, 4] + .flatMap(n => + [true, false].map(nonConst => ({ + [`f16_vec${n}_${nonConst ? 'non_const' : 'const'}`]: () => { + return generateCases( + 'f16', + sparseVectorF16Range(n), + sparseVectorF16Range(n), + sparseF16Range(), + nonConst ? 'unfiltered' : 'finite' + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('refract', { - f32_vec2_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(2), - sparseVectorF32Range(2), - sparseF32Range(), - 'finite' - ); - }, - f32_vec2_non_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(2), - sparseVectorF32Range(2), - sparseF32Range(), - 'unfiltered' - ); - }, - f32_vec3_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(3), - sparseVectorF32Range(3), - sparseF32Range(), - 'finite' - ); - }, - f32_vec3_non_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(3), - sparseVectorF32Range(3), - sparseF32Range(), - 'unfiltered' - ); - }, - f32_vec4_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(4), - sparseVectorF32Range(4), - sparseF32Range(), - 'finite' - ); - }, - f32_vec4_non_const: () => { - return generateCases( - 'f32', - sparseVectorF32Range(4), - sparseVectorF32Range(4), - sparseF32Range(), - 'unfiltered' - ); - }, + ...f32_vec_cases, + ...f16_vec_cases, }); g.test('abstract_float') @@ -193,8 +180,68 @@ g.test('f32_vec4') ); }); -g.test('f16') - .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') - .desc(`f16 tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [2, 3, 4])) - .unimplemented(); +g.test('f16_vec2') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec2s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec2_const' : 'f16_vec2_non_const' + ); + + await run( + t, + builtin('refract'), + [TypeVec(2, TypeF16), TypeVec(2, TypeF16), TypeF16], + TypeVec(2, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_vec3') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec3s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec3_const' : 'f16_vec3_non_const' + ); + + await run( + t, + builtin('refract'), + [TypeVec(3, TypeF16), TypeVec(3, TypeF16), TypeF16], + TypeVec(3, TypeF16), + t.params, + cases + ); + }); + +g.test('f16_vec4') + .specURL('https://www.w3.org/TR/WGSL/#numeric-builtin-functions') + .desc(`f16 tests using vec4s`) + .params(u => u.combine('inputSource', allInputSources)) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get( + t.params.inputSource === 'const' ? 'f16_vec4_const' : 'f16_vec4_non_const' + ); + + await run( + t, + builtin('refract'), + [TypeVec(4, TypeF16), TypeVec(4, TypeF16), TypeF16], + TypeVec(4, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/round.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/round.spec.js index 10d30b414ce..d6366e5bba2 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/round.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/round.spec.js @@ -13,9 +13,9 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -25,7 +25,26 @@ export const g = makeTestGroup(GPUTest); export const d = makeCaseCache('round', { f32: () => { - return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.roundInterval); + return FP.f32.generateScalarToIntervalCases( + [ + 0x80000000, // https://github.com/gpuweb/cts/issues/2766, + ...fullF32Range(), + ], + + 'unfiltered', + FP.f32.roundInterval + ); + }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + 0x8000, // https://github.com/gpuweb/cts/issues/2766 + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.roundInterval + ); }, }); @@ -48,4 +67,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('round'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/saturate.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/saturate.spec.js index a75b61b6906..f2d997d487d 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/saturate.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/saturate.spec.js @@ -10,13 +10,13 @@ Returns clamp(e, 0.0, 1.0). Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeAbstractFloat, TypeF16, TypeF32 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, linearRange } from '../../../../../util/math.js'; +import { fullF16Range, fullF32Range, fullF64Range, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -25,7 +25,7 @@ export const d = makeCaseCache('saturate', { return FP.f32.generateScalarToIntervalCases( [ // Non-clamped values - ...linearRange(0.0, 1.0, 100), + ...linearRange(0.0, 1.0, 20), ...fullF32Range(), ], @@ -33,14 +33,49 @@ export const d = makeCaseCache('saturate', { FP.f32.saturateInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // Non-clamped values + ...linearRange(0.0, 1.0, 20), + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.saturateInterval + ); + }, + abstract: () => { + return FP.abstract.generateScalarToIntervalCases( + [ + // Non-clamped values + ...linearRange(0.0, 1.0, 20), + ...fullF64Range(), + ], + + 'unfiltered', + FP.abstract.saturateInterval + ); + }, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); - + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run( + t, + abstractBuiltin('saturate'), + [TypeAbstractFloat], + TypeAbstractFloat, + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f32 tests`) @@ -54,4 +89,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('saturate'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js index 9f86a28526b..0718bebefd6 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js @@ -17,9 +17,11 @@ import { TypeVec, TypeBool, TypeF32, + TypeF16, TypeI32, TypeU32, f32, + f16, i32, u32, False, @@ -48,6 +50,10 @@ const dataType = { type: TypeF32, constructor: f32, }, + h: { + type: TypeF16, + constructor: f16, + }, i: { type: TypeI32, constructor: i32, @@ -64,9 +70,14 @@ g.test('scalar') .params(u => u .combine('inputSource', allInputSources) - .combine('component', ['b', 'f', 'i', 'u']) + .combine('component', ['b', 'f', 'h', 'i', 'u']) .combine('overload', ['scalar', 'vec2', 'vec3', 'vec4']) ) + .beforeAllSubcases(t => { + if (t.params.component === 'h') { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + } + }) .fn(async t => { const componentType = dataType[t.params.component].type; const cons = dataType[t.params.component].constructor; @@ -134,9 +145,14 @@ g.test('vector') .params(u => u .combine('inputSource', allInputSources) - .combine('component', ['b', 'f', 'i', 'u']) + .combine('component', ['b', 'f', 'h', 'i', 'u']) .combine('overload', ['vec2', 'vec3', 'vec4']) ) + .beforeAllSubcases(t => { + if (t.params.component === 'h') { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + } + }) .fn(async t => { const componentType = dataType[t.params.component].type; const cons = dataType[t.params.component].constructor; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sign.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sign.spec.js index 3f30f351639..4526f52f387 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sign.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sign.spec.js @@ -10,9 +10,9 @@ Returns the sign of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { i32, TypeF32, TypeI32 } from '../../../../../util/conversion.js'; +import { i32, TypeF32, TypeF16, TypeI32 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, fullI32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, fullI32Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -24,6 +24,9 @@ export const d = makeCaseCache('sign', { f32: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.signInterval); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.signInterval); + }, i32: () => fullI32Range().map(i => { const signFunc = i => (i < 0 ? -1 : i > 0 ? 1 : 0); @@ -65,4 +68,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#sign-builtin') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('sign'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js index 04ba6a9e142..8883c65bad0 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js @@ -10,9 +10,9 @@ Returns the sine of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, linearRange } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -33,6 +33,18 @@ export const d = makeCaseCache('sin', { FP.f32.sinInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // Well-defined accuracy range + ...linearRange(-Math.PI, Math.PI, 1000), + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.sinInterval + ); + }, }); g.test('abstract_float') @@ -60,4 +72,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('sin'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sinh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sinh.spec.js index 7936ec3be8f..62d3f63a16a 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sinh.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sinh.spec.js @@ -10,9 +10,9 @@ Returns the hyperbolic sine of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -27,6 +27,12 @@ export const d = makeCaseCache('sinh', { f32_non_const: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.sinhInterval); }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'finite', FP.f16.sinhInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.sinhInterval); + }, }); g.test('abstract_float') @@ -48,4 +54,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('sinh'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/smoothstep.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/smoothstep.spec.js index f338b15dacd..33f29dcdbf9 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/smoothstep.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/smoothstep.spec.js @@ -12,9 +12,9 @@ For scalar T, the result is t * t * (3.0 - 2.0 * t), where t = clamp((x - low) / `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseF32Range } from '../../../../../util/math.js'; +import { sparseF32Range, sparseF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -41,6 +41,24 @@ export const d = makeCaseCache('smoothstep', { FP.f32.smoothStepInterval ); }, + f16_const: () => { + return FP.f16.generateScalarTripleToIntervalCases( + sparseF16Range(), + sparseF16Range(), + sparseF16Range(), + 'finite', + FP.f16.smoothStepInterval + ); + }, + f16_non_const: () => { + return FP.f16.generateScalarTripleToIntervalCases( + sparseF16Range(), + sparseF16Range(), + sparseF16Range(), + 'unfiltered', + FP.f16.smoothStepInterval + ); + }, }); g.test('abstract_float') @@ -62,4 +80,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('smoothstep'), [TypeF16, TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sqrt.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sqrt.spec.js index 15cc85adf1f..1f80ab40ef6 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sqrt.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sqrt.spec.js @@ -10,9 +10,9 @@ Returns the square root of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -27,6 +27,12 @@ export const d = makeCaseCache('sqrt', { f32_non_const: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.sqrtInterval); }, + f16_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'finite', FP.f16.sqrtInterval); + }, + f16_non_const: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.sqrtInterval); + }, }); g.test('abstract_float') @@ -48,4 +54,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f16_const' : 'f16_non_const'); + await run(t, builtin('sqrt'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/step.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/step.spec.js index cb122b40439..100696aab29 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/step.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/step.spec.js @@ -11,9 +11,9 @@ Returns 1.0 if edge ≤ x, and 0.0 otherwise. Component-wise when T is a vector. import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; import { anyOf } from '../../../../../util/compare.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -21,40 +21,36 @@ import { builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// stepInterval's return value can't always be interpreted as a single acceptance +// interval, valid result may be 0.0 or 1.0 or both of them, but will never be a +// value in interval (0.0, 1.0). +// See the comment block on stepInterval for more details +const makeCase = (trait, edge, x) => { + const FPTrait = FP[trait]; + edge = FPTrait.quantize(edge); + x = FPTrait.quantize(x); + const expected = FPTrait.stepInterval(edge, x); + + // [0, 0], [1, 1], or [-∞, +∞] cases + if (expected.isPoint() || !expected.isFinite()) { + return { input: [FPTrait.scalarBuilder(edge), FPTrait.scalarBuilder(x)], expected }; + } + + // [0, 1] case, valid result is either 0.0 or 1.0. + const zeroInterval = FPTrait.toInterval(0); + const oneInterval = FPTrait.toInterval(1); + return { + input: [FPTrait.scalarBuilder(edge), FPTrait.scalarBuilder(x)], + expected: anyOf(zeroInterval, oneInterval), + }; +}; + export const d = makeCaseCache('step', { f32: () => { - const zeroInterval = FP.f32.toInterval(0); - const oneInterval = FP.f32.toInterval(1); - - // stepInterval's return value isn't always interpreted as an acceptance - // interval, so makeBinaryToF32IntervalCase cannot be used here. - // See the comment block on stepInterval for more details - const makeCase = (edge, x) => { - edge = FP.f32.quantize(edge); - x = FP.f32.quantize(x); - const expected = FP.f32.stepInterval(edge, x); - - // [0, 0], [1, 1], or [-∞, +∞] cases - if (expected.isPoint() || !expected.isFinite()) { - return { input: [FP.f32.scalarBuilder(edge), FP.f32.scalarBuilder(x)], expected }; - } - - // [0, 1] case - return { - input: [FP.f32.scalarBuilder(edge), FP.f32.scalarBuilder(x)], - expected: anyOf(zeroInterval, oneInterval), - }; - }; - - const range = fullF32Range(); - const cases = []; - range.forEach(edge => { - range.forEach(x => { - cases.push(makeCase(edge, x)); - }); - }); - - return cases; + return fullF32Range().flatMap(edge => fullF32Range().map(x => makeCase('f32', edge, x))); + }, + f16: () => { + return fullF16Range().flatMap(edge => fullF16Range().map(x => makeCase('f16', edge, x))); }, }); @@ -77,4 +73,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('step'), [TypeF16, TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tan.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tan.spec.js index e68877bfe87..206d62b2e99 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tan.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tan.spec.js @@ -10,9 +10,9 @@ Returns the tangent of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range, linearRange } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range, linearRange } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -33,6 +33,18 @@ export const d = makeCaseCache('tan', { FP.f32.tanInterval ); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases( + [ + // Defined accuracy range + ...linearRange(-Math.PI, Math.PI, 100), + ...fullF16Range(), + ], + + 'unfiltered', + FP.f16.tanInterval + ); + }, }); g.test('abstract_float') @@ -54,4 +66,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('tan'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tanh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tanh.spec.js index 7a57db1c406..b10e9f3f0f3 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tanh.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tanh.spec.js @@ -10,9 +10,9 @@ Returns the hyperbolic tangent of e. Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeF32, TypeF16 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF16Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; import { allInputSources, run } from '../../expression.js'; @@ -24,6 +24,9 @@ export const d = makeCaseCache('tanh', { f32: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.tanhInterval); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases(fullF16Range(), 'unfiltered', FP.f16.tanhInterval); + }, }); g.test('abstract_float') @@ -45,4 +48,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('tanh'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/transpose.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/transpose.spec.js index 222eb917ada..ffcf4535714 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/transpose.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/transpose.spec.js @@ -9,152 +9,97 @@ Returns the transpose of e. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32, TypeMat } from '../../../../../util/conversion.js'; +import { TypeAbstractFloat, TypeF16, TypeF32, TypeMat } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { sparseMatrixF32Range } from '../../../../../util/math.js'; +import { + sparseMatrixF16Range, + sparseMatrixF32Range, + sparseMatrixF64Range, +} from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_matCxR_[non_]const +const f32_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`f32_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixToMatrixCases( + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.transposeInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_matCxR_[non_]const +const f16_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`f16_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f16.generateMatrixToMatrixCases( + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.transposeInterval + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: abstract_matCxR +const abstract_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].map(rows => ({ + [`abstract_mat${cols}x${rows}`]: () => { + return FP.abstract.generateMatrixToMatrixCases( + sparseMatrixF64Range(cols, rows), + 'finite', + FP.abstract.transposeInterval + ); + }, + })) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('transpose', { - f32_mat2x2_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat2x2_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat2x3_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat2x3_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat2x4_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat2x4_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat3x2_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat3x2_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat3x3_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat3x3_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat3x4_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat3x4_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat4x2_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat4x2_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat4x3_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat4x3_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.transposeInterval - ); - }, - f32_mat4x4_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.transposeInterval - ); - }, - f32_mat4x4_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.transposeInterval - ); - }, + ...f32_cases, + ...f16_cases, + ...abstract_cases, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions') .desc(`abstract float tests`) .params(u => - u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + u + .combine('inputSource', onlyConstInputSource) + .combine('cols', [2, 3, 4]) + .combine('rows', [2, 3, 4]) ) - .unimplemented(); + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get(`abstract_mat${cols}x${rows}`); + await run( + t, + abstractBuiltin('transpose'), + [TypeMat(cols, rows, TypeAbstractFloat)], + TypeMat(rows, cols, TypeAbstractFloat), + t.params, + cases + ); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions') @@ -187,4 +132,24 @@ g.test('f16') .params(u => u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) ) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `f16_mat${cols}x${rows}_const` + : `f16_mat${cols}x${rows}_non_const` + ); + + await run( + t, + builtin('transpose'), + [TypeMat(cols, rows, TypeF16)], + TypeMat(rows, cols, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/trunc.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/trunc.spec.js index 51d42f38bb5..0660e566619 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/trunc.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/call/builtin/trunc.spec.js @@ -11,13 +11,13 @@ Component-wise when T is a vector. `; import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; import { GPUTest } from '../../../../../gpu_test.js'; -import { TypeF32 } from '../../../../../util/conversion.js'; +import { TypeAbstractFloat, TypeF16, TypeF32 } from '../../../../../util/conversion.js'; import { FP } from '../../../../../util/floating_point.js'; -import { fullF32Range } from '../../../../../util/math.js'; +import { fullF32Range, fullF64Range } from '../../../../../util/math.js'; import { makeCaseCache } from '../../case_cache.js'; -import { allInputSources, run } from '../../expression.js'; +import { allInputSources, onlyConstInputSource, run } from '../../expression.js'; -import { builtin } from './builtin.js'; +import { abstractBuiltin, builtin } from './builtin.js'; export const g = makeTestGroup(GPUTest); @@ -25,13 +25,28 @@ export const d = makeCaseCache('trunc', { f32: () => { return FP.f32.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f32.truncInterval); }, + f16: () => { + return FP.f16.generateScalarToIntervalCases(fullF32Range(), 'unfiltered', FP.f16.truncInterval); + }, + abstract: () => { + return FP.abstract.generateScalarToIntervalCases( + fullF64Range(), + 'unfiltered', + FP.abstract.truncInterval + ); + }, }); g.test('abstract_float') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`abstract float tests`) - .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('abstract'); + await run(t, abstractBuiltin('trunc'), [TypeAbstractFloat], TypeAbstractFloat, t.params, cases); + }); g.test('f32') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') @@ -46,4 +61,10 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#float-builtin-functions') .desc(`f16 tests`) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, builtin('trunc'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/case_cache.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/case_cache.js index c19bb3df278..ee2f36423d6 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/case_cache.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/case_cache.js @@ -1,6 +1,7 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { dataCache } from '../../../../common/framework/data_cache.js'; +import { unreachable } from '../../../../common/util/util.js'; import { deserializeComparator, serializeComparator } from '../../../util/compare.js'; import { Scalar, @@ -51,7 +52,7 @@ export function serializeExpectation(e) { if (isComparator(e)) { return { kind: 'comparator', value: serializeComparator(e) }; } - throw `cannot serialize Expectation ${e}`; + unreachable(`cannot serialize Expectation ${e}`); } /** deserializeExpectation() converts a SerializedExpectation to a Expectation */ diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/expression.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/expression.js index 07ebe7a0435..602353daa2e 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/expression.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/expression.js @@ -3,6 +3,7 @@ **/ import { globalTestConfig } from '../../../../common/framework/test_config.js'; import { assert, objectEquals, unreachable } from '../../../../common/util/util.js'; import { compare } from '../../../util/compare.js'; +import { kValue } from '../../../util/constants.js'; import { ScalarType, Scalar, @@ -46,10 +47,66 @@ export function toComparator(input) { /** All possible input sources */ export const allInputSources = ['const', 'uniform', 'storage_r', 'storage_rw']; +/** Just constant input source */ +export const onlyConstInputSource = ['const']; + /** Configuration for running a expression test */ // Helper for returning the stride for a given Type function valueStride(ty) { + // AbstractFloats are passed out of the shader via a struct of 2x u32s and + // unpacking containers as arrays + if (scalarTypeOf(ty).kind === 'abstract-float') { + if (ty instanceof ScalarType) { + return 16; + } + if (ty instanceof VectorType) { + if (ty.width === 2) { + return 16; + } + // vec3s have padding to make them the same size as vec4s + return 32; + } + if (ty instanceof MatrixType) { + switch (ty.cols) { + case 2: + switch (ty.rows) { + case 2: + return 32; + case 3: + return 64; + case 4: + return 64; + } + + break; + case 3: + switch (ty.rows) { + case 2: + return 48; + case 3: + return 96; + case 4: + return 96; + } + + break; + case 4: + switch (ty.rows) { + case 2: + return 64; + case 3: + return 128; + case 4: + return 128; + } + + break; + } + } + unreachable(`AbstractFloats have not yet been implemented for ${ty.toString()}`); + } + if (ty instanceof MatrixType) { switch (ty.cols) { case 2: @@ -104,6 +161,12 @@ function valueStrides(tys) { // Helper for returning the WGSL storage type for the given Type. function storageType(ty) { if (ty instanceof ScalarType) { + assert(ty.kind !== 'f64', `No storage type defined for 'f64' values`); + assert( + ty.kind !== 'abstract-float', + `Custom handling is implemented for 'abstract-float' values` + ); + if (ty.kind === 'bool') { return TypeU32; } @@ -117,7 +180,8 @@ function storageType(ty) { // Helper for converting a value of the type 'ty' from the storage type. function fromStorage(ty, expr) { if (ty instanceof ScalarType) { - assert(ty.kind !== 'abstract-float', `No storage type defined for AbstractFloat values`); + assert(ty.kind !== 'abstract-float', `AbstractFloat values should not be in input storage`); + assert(ty.kind !== 'f64', `'No storage type defined for 'f64' values`); if (ty.kind === 'bool') { return `${expr} != 0u`; } @@ -125,9 +189,10 @@ function fromStorage(ty, expr) { if (ty instanceof VectorType) { assert( ty.elementType.kind !== 'abstract-float', - `No storage type defined for AbstractFloat values` + `AbstractFloat values cannot appear in input storage` ); + assert(ty.elementType.kind !== 'f64', `'No storage type defined for 'f64' values`); if (ty.elementType.kind === 'bool') { return `${expr} != vec${ty.width}(0u)`; } @@ -138,7 +203,12 @@ function fromStorage(ty, expr) { // Helper for converting a value of the type 'ty' to the storage type. function toStorage(ty, expr) { if (ty instanceof ScalarType) { - assert(ty.kind !== 'abstract-float', `No storage type defined for AbstractFloat values`); + assert( + ty.kind !== 'abstract-float', + `AbstractFloat values have custom code for writing to storage` + ); + + assert(ty.kind !== 'f64', `No storage type defined for 'f64' values`); if (ty.kind === 'bool') { return `select(0u, 1u, ${expr})`; } @@ -146,9 +216,10 @@ function toStorage(ty, expr) { if (ty instanceof VectorType) { assert( ty.elementType.kind !== 'abstract-float', - `No storage type defined for AbstractFloat values` + `AbstractFloat values have custom code for writing to storage` ); + assert(ty.elementType.kind !== 'f64', `'No storage type defined for 'f64' values`); if (ty.elementType.kind === 'bool') { return `select(vec${ty.width}(0u), vec${ty.width}(1u), ${expr})`; } @@ -187,6 +258,7 @@ function getOrCreate(map, key, create) { * @param resultType the return type for the expression overload * @param cfg test configuration values * @param cases list of test cases + * @param batch_size override the calculated casesPerBatch. */ export async function run( t, @@ -194,7 +266,8 @@ export async function run( parameterTypes, resultType, cfg = { inputSource: 'storage_r' }, - cases + cases, + batch_size ) { // If the 'vectorize' config option was provided, pack the cases into vectors. if (cfg.vectorize !== undefined) { @@ -208,6 +281,9 @@ export async function run( // so chunk the tests up into batches that fit into the limits. We also split // the cases into smaller batches to help with shader compilation performance. const casesPerBatch = (function () { + if (batch_size) { + return batch_size; + } switch (cfg.inputSource) { case 'const': // Some drivers are slow to optimize shaders with many constant values, @@ -388,21 +464,60 @@ function map(v, fn) { * Helper that returns the WGSL to declare the output storage buffer for a shader */ function wgslOutputs(resultType, count) { - return ` + let output_struct = undefined; + if (scalarTypeOf(resultType).kind !== 'abstract-float') { + output_struct = ` struct Output { @size(${valueStride(resultType)}) value : ${storageType(resultType)} +};`; + } else { + if (resultType instanceof ScalarType) { + output_struct = `struct AF { + low: u32, + high: u32, }; -@group(0) @binding(0) var outputs : array;`; + +struct Output { + @size(${valueStride(resultType)}) value: AF, +};`; + } + if (resultType instanceof VectorType) { + const dim = resultType.width; + output_struct = `struct AF { + low: u32, + high: u32, +}; + +struct Output { + @size(${valueStride(resultType)}) value: array, +};`; + } + + if (resultType instanceof MatrixType) { + const cols = resultType.cols; + const rows = resultType.rows === 2 ? 2 : 4; // 3 element rows have a padding element + output_struct = `struct AF { + low: u32, + high: u32, +}; + +struct Output { + @size(${valueStride(resultType)}) value: array, ${cols}>, +};`; + } + + assert(output_struct !== undefined, `No implementation for result type '${resultType}'`); + } + + return `${output_struct} +@group(0) @binding(0) var outputs : array; +`; } /** * Helper that returns the WGSL to declare the values array for a shader */ function wgslValuesArray(parameterTypes, resultType, cases, expressionBuilder) { - // AbstractFloat values cannot be stored in an array - if (parameterTypes.some(ty => scalarTypeOf(ty).kind === 'abstract-float')) { - return ''; - } return ` const values = array( ${cases.map(c => expressionBuilder(map(c.input, v => v.wgsl()))).join(',\n ')} @@ -446,38 +561,50 @@ function wgslHeader(parameterTypes, resultType) { * Returns a ShaderBuilder that builds a basic expression test shader. * @param expressionBuilder the expression builder */ -export function basicExpressionBuilder(expressionBuilder) { - return (parameterTypes, resultType, cases, inputSource) => { - if (inputSource === 'const') { - ////////////////////////////////////////////////////////////////////////// - // Constant eval - ////////////////////////////////////////////////////////////////////////// - let body = ''; - if (parameterTypes.some(ty => scalarTypeOf(ty).kind === 'abstract-float')) { - // Directly assign the expression to the output, to avoid an - // intermediate store, which will concretize the value early - body = cases - .map( - (c, i) => ` outputs[${i}].value = ${expressionBuilder(map(c.input, v => v.wgsl()))};` - ) - .join('\n '); - } else if (globalTestConfig.unrollConstEvalLoops) { - body = cases - .map((_, i) => { - const value = `values[${i}]`; - return ` outputs[${i}].value = ${toStorage(resultType, value)};`; - }) - .join('\n '); - } else { - body = ` +function basicExpressionShaderBody( + expressionBuilder, + parameterTypes, + resultType, + cases, + inputSource +) { + assert( + scalarTypeOf(resultType).kind !== 'abstract-float', + `abstractFloatShaderBuilder should be used when result type is 'abstract-float` + ); + + if (inputSource === 'const') { + ////////////////////////////////////////////////////////////////////////// + // Constant eval + ////////////////////////////////////////////////////////////////////////// + let body = ''; + if (parameterTypes.some(ty => scalarTypeOf(ty).kind === 'abstract-float')) { + // Directly assign the expression to the output, to avoid an + // intermediate store, which will concretize the value early + body = cases + .map( + (c, i) => + ` outputs[${i}].value = ${toStorage( + resultType, + expressionBuilder(map(c.input, v => v.wgsl())) + )};` + ) + .join('\n '); + } else if (globalTestConfig.unrollConstEvalLoops) { + body = cases + .map((_, i) => { + const value = `values[${i}]`; + return ` outputs[${i}].value = ${toStorage(resultType, value)};`; + }) + .join('\n '); + } else { + body = ` for (var i = 0u; i < ${cases.length}; i++) { outputs[i].value = ${toStorage(resultType, `values[i]`)}; }`; - } - - return ` -${wgslHeader(parameterTypes, resultType)} + } + return ` ${wgslOutputs(resultType, cases.length)} ${wgslValuesArray(parameterTypes, resultType, cases, expressionBuilder)} @@ -486,20 +613,18 @@ ${wgslValuesArray(parameterTypes, resultType, cases, expressionBuilder)} fn main() { ${body} }`; - } else { - ////////////////////////////////////////////////////////////////////////// - // Runtime eval - ////////////////////////////////////////////////////////////////////////// + } else { + ////////////////////////////////////////////////////////////////////////// + // Runtime eval + ////////////////////////////////////////////////////////////////////////// - // returns the WGSL expression to load the ith parameter of the given type from the input buffer - const paramExpr = (ty, i) => fromStorage(ty, `inputs[i].param${i}`); + // returns the WGSL expression to load the ith parameter of the given type from the input buffer + const paramExpr = (ty, i) => fromStorage(ty, `inputs[i].param${i}`); - // resolves to the expression that calls the builtin - const expr = toStorage(resultType, expressionBuilder(parameterTypes.map(paramExpr))); - - return ` -${wgslHeader(parameterTypes, resultType)} + // resolves to the expression that calls the builtin + const expr = toStorage(resultType, expressionBuilder(parameterTypes.map(paramExpr))); + return ` struct Input { ${parameterTypes .map((ty, i) => ` @size(${valueStride(ty)}) param${i} : ${storageType(ty)},`) @@ -517,7 +642,36 @@ fn main() { } } `; - } + } +} + +/** + * Returns a ShaderBuilder that builds a basic expression test shader. + * @param expressionBuilder the expression builder + */ +export function basicExpressionBuilder(expressionBuilder) { + return (parameterTypes, resultType, cases, inputSource) => { + return `\ +${wgslHeader(parameterTypes, resultType)} + +${basicExpressionShaderBody(expressionBuilder, parameterTypes, resultType, cases, inputSource)}`; + }; +} + +/** + * Returns a ShaderBuilder that builds a basic expression test shader with given predeclaration + * string goes after WGSL header (i.e. enable directives) if any but before anything else. + * @param expressionBuilder the expression builder + * @param predeclaration the predeclaration string + */ +export function basicExpressionWithPredeclarationBuilder(expressionBuilder, predeclaration) { + return (parameterTypes, resultType, cases, inputSource) => { + return `\ +${wgslHeader(parameterTypes, resultType)} + +${predeclaration} + +${basicExpressionShaderBody(expressionBuilder, parameterTypes, resultType, cases, inputSource)}`; }; } @@ -608,6 +762,172 @@ fn main() { }; } +/** + * @returns a string that extracts the value of an AbstractFloat into an output + * destination + * @param expr expression for an AbstractFloat value, if working with vectors or + * matrices, this string needs to include indexing into the + * container. + * @param case_idx index in the case output array to assign the result + * @param accessor string representing how access to the AF that needs to be + * operated on. + * For scalars this should be left as ''. + * For vectors this will be an indexing operation, + * i.e. '[i]' + * For matrices this will double indexing operation, + * i.e. '[c][r]' + */ +function abstractFloatSnippet(expr, case_idx, accessor = '') { + // AbstractFloats are f64s under the hood. WebGPU does not support + // putting f64s in buffers, so the result needs to be split up into u32s + // and rebuilt in the test framework. + // + // Since there is no 64-bit data type that can be used as an element for a + // vector or a matrix in WGSL, the testing framework needs to pass the u32s + // via a struct with two u32s, and deconstruct vectors and matrices into + // arrays. + // + // This is complicated by the fact that user defined functions cannot + // take/return AbstractFloats, and AbstractFloats cannot be stored in + // variables, so the code cannot just inject a simple utility function + // at the top of the shader, instead this snippet needs to be inlined + // everywhere the test needs to return an AbstractFloat. + // + // select is used below, since ifs are not available during constant + // eval. This has the side effect of short-circuiting doesn't occur, so + // both sides of the select have to evaluate and be valid. + // + // This snippet implements FTZ for subnormals to bypass the need for + // complex subnormal specific logic. + // + // Expressions resulting in subnormals can still be reasonably tested, + // since this snippet will return 0 with the correct sign, which is + // always in the acceptance interval for a subnormal result, since an + // implementation may FTZ. + // + // Documentation for the snippet working with scalar results is included here + // in this code block, since shader length affects compilation time + // significantly on some backends. The code for vectors and matrices basically + // the same thing, with extra indexing operations. + // + // Snippet with documentation: + // const kExponentBias = 1022; + // + // // Detect if the value is zero or subnormal, so that FTZ behaviour + // // can occur + // const subnormal_or_zero : bool = (${expr} <= ${kValue.f64.positive.subnormal.max}) && (${expr} >= ${kValue.f64.negative.subnormal.min}); + // + // // MSB of the upper u32 is 1 if the value is negative, otherwise 0 + // // Extract the sign bit early, so that abs() can be used with + // // frexp() so negative cases do not need to be handled + // const sign_bit : u32 = select(0, 0x80000000, ${expr} < 0); + // + // // Use frexp() to obtain the exponent and fractional parts, and + // // then perform FTZ if needed + // const f = frexp(abs(${expr})); + // const f_fract = select(f.fract, 0, subnormal_or_zero); + // const f_exp = select(f.exp, -kExponentBias, subnormal_or_zero); + // + // // Adjust for the exponent bias and shift for storing in bits + // // [20..31] of the upper u32 + // const exponent_bits : u32 = (f_exp + kExponentBias) << 20; + // + // // Extract the portion of the mantissa that appears in upper u32 as + // // a float for later use + // const high_mantissa = ldexp(f_fract, 21); + // + // // Extract the portion of the mantissa that appears in upper u32 as + // // as bits. This value is masked, because normals will explicitly + // // have the implicit leading 1 that should not be in the final + // // result. + // const high_mantissa_bits : u32 = u32(ldexp(f_fract, 21)) & 0x000fffff; + // + // // Calculate the mantissa stored in the lower u32 as a float + // const low_mantissa = f_fract - ldexp(floor(high_mantissa), -21); + // + // // Convert the lower u32 mantissa to bits + // const low_mantissa_bits = u32(ldexp(low_mantissa, 53)); + // + // outputs[${i}].value.high = sign_bit | exponent_bits | high_mantissa_bits; + // outputs[${i}].value.low = low_mantissa_bits; + + return ` { + const kExponentBias = 1022; + const subnormal_or_zero : bool = (${expr}${accessor} <= ${kValue.f64.positive.subnormal.max}) && (${expr}${accessor} >= ${kValue.f64.negative.subnormal.min}); + const sign_bit : u32 = select(0, 0x80000000, ${expr}${accessor} < 0); + const f = frexp(abs(${expr}${accessor})); + const f_fract = select(f.fract, 0, subnormal_or_zero); + const f_exp = select(f.exp, -kExponentBias, subnormal_or_zero); + const exponent_bits : u32 = (f_exp + kExponentBias) << 20; + const high_mantissa = ldexp(f_fract, 21); + const high_mantissa_bits : u32 = u32(ldexp(f_fract, 21)) & 0x000fffff; + const low_mantissa = f_fract - ldexp(floor(high_mantissa), -21); + const low_mantissa_bits = u32(ldexp(low_mantissa, 53)); + outputs[${case_idx}].value${accessor}.high = sign_bit | exponent_bits | high_mantissa_bits; + outputs[${case_idx}].value${accessor}.low = low_mantissa_bits; + }`; +} + +/** @returns a string for a specific case that has a AbstractFloat result */ +function abstractFloatCaseBody(expr, resultType, i) { + if (resultType instanceof ScalarType) { + return abstractFloatSnippet(expr, i); + } + + if (resultType instanceof VectorType) { + return [...Array(resultType.width).keys()] + .map(idx => abstractFloatSnippet(expr, i, `[${idx}]`)) + .join(' \n'); + } + + if (resultType instanceof MatrixType) { + const cols = resultType.cols; + const rows = resultType.rows; + const results = [...Array(cols * rows)]; + + for (let c = 0; c < cols; c++) { + for (let r = 0; r < rows; r++) { + results[c * rows + r] = abstractFloatSnippet(expr, i, `[${c}][${r}]`); + } + } + + return results.join(' \n'); + } + + unreachable(`Results of type '${resultType}' not yet implemented`); +} + +/** + * @returns a ShaderBuilder that builds a test shader hands AbstractFloat results. + * @param expressionBuilder an expression builder that will return AbstractFloats + */ +export function abstractFloatShaderBuilder(expressionBuilder) { + return (parameterTypes, resultType, cases, inputSource) => { + assert(inputSource === 'const', 'AbstractFloat results are only defined for const-eval'); + assert( + scalarTypeOf(resultType).kind === 'abstract-float', + `Expected resultType of 'abstract-float', received '${scalarTypeOf(resultType).kind}' instead` + ); + + const body = cases + .map((c, i) => { + const expr = `${expressionBuilder(map(c.input, v => v.wgsl()))}`; + return abstractFloatCaseBody(expr, resultType, i); + }) + .join('\n '); + + return ` +${wgslHeader(parameterTypes, resultType)} + +${wgslOutputs(resultType, cases.length)} + +@compute @workgroup_size(1) +fn main() { +${body} +}`; + }; +} + /** * Constructs and returns a GPUComputePipeline and GPUBindGroup for running a * batch of test cases. If a pre-created pipeline can be found in diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/abstract_float_assignment.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/abstract_float_assignment.spec.js deleted file mode 100644 index 6ef9c01ee1c..00000000000 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/abstract_float_assignment.spec.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ export const description = ` -Execution Tests for assignment of AbstractFloats to concrete data types -`; -import { makeTestGroup } from '../../../../../common/framework/test_group.js'; -import { GPUTest } from '../../../../gpu_test.js'; -import { kValue } from '../../../../util/constants.js'; -import { abstractFloat, TypeAbstractFloat, TypeF16, TypeF32 } from '../../../../util/conversion.js'; -import { FP } from '../../../../util/floating_point.js'; -import { filteredF64Range } from '../../../../util/math.js'; -import { makeCaseCache } from '../case_cache.js'; -import { allInputSources, run } from '../expression.js'; - -import { assignment } from './unary.js'; - -export const g = makeTestGroup(GPUTest); - -export const d = makeCaseCache('unary/abstract_float_assignment', { - f32: () => { - return filteredF64Range(kValue.f32.negative.min, kValue.f32.positive.max).map(f => { - return { input: abstractFloat(f), expected: FP.f32.correctlyRoundedInterval(f) }; - }); - }, - f16: () => { - return filteredF64Range(kValue.f16.negative.min, kValue.f16.positive.max).map(f => { - return { input: abstractFloat(f), expected: FP.f16.correctlyRoundedInterval(f) }; - }); - }, -}); - -g.test('f32') - .specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion') - .desc( - ` -concretizing to f32 -` - ) - .params(u => u.combine('inputSource', [allInputSources[0]])) // Only defined for const-eval - .fn(async t => { - const cases = await d.get('f32'); - await run(t, assignment(), [TypeAbstractFloat], TypeF32, t.params, cases); - }); - -g.test('f16') - .specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion') - .desc( - ` -concretizing to f16 -` - ) - .beforeAllSubcases(t => { - t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); - }) - .params(u => u.combine('inputSource', [allInputSources[0]])) // Only defined for const-eval - .fn(async t => { - const cases = await d.get('f16'); - await run(t, assignment(), [TypeAbstractFloat], TypeF16, t.params, cases); - }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_arithmetic.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_arithmetic.spec.js new file mode 100644 index 00000000000..faeeb97245e --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_arithmetic.spec.js @@ -0,0 +1,42 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for AbstractFloat arithmetic unary expression operations +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeAbstractFloat } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { fullF64Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { onlyConstInputSource, run } from '../expression.js'; + +import { abstractUnary } from './unary.js'; + +export const g = makeTestGroup(GPUTest); + +export const d = makeCaseCache('unary/af_arithmetic', { + negation: () => { + return FP.abstract.generateScalarToIntervalCases( + fullF64Range({ neg_norm: 250, neg_sub: 20, pos_sub: 20, pos_norm: 250 }), + 'unfiltered', + FP.abstract.negationInterval + ); + }, +}); + +g.test('negation') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: -x +Accuracy: Correctly rounded +` + ) + .params(u => + u.combine('inputSource', onlyConstInputSource).combine('vectorize', [undefined, 2, 3, 4]) + ) + .fn(async t => { + const cases = await d.get('negation'); + await run(t, abstractUnary('-'), [TypeAbstractFloat], TypeAbstractFloat, t.params, cases, 1); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_assignment.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_assignment.spec.js new file mode 100644 index 00000000000..0428a97e70b --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/af_assignment.spec.js @@ -0,0 +1,117 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for assignment of AbstractFloats +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { kValue } from '../../../../util/constants.js'; +import { abstractFloat, TypeAbstractFloat, TypeF16, TypeF32 } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { + filteredF64Range, + fullF64Range, + isSubnormalNumberF64, + reinterpretU64AsF64, +} from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { + abstractFloatShaderBuilder, + basicExpressionBuilder, + onlyConstInputSource, + run, +} from '../expression.js'; + +function concrete_assignment() { + return basicExpressionBuilder(value => `${value}`); +} + +function abstract_assignment() { + return abstractFloatShaderBuilder(value => `${value}`); +} + +export const g = makeTestGroup(GPUTest); + +export const d = makeCaseCache('unary/af_assignment', { + abstract: () => { + const inputs = [ + // Values that are useful for debugging the underlying framework/shader code, since it cannot be directly unit tested. + 0, + 0.5, + 0.5, + 1, + -1, + reinterpretU64AsF64(0x7000_0000_0000_0001n), // smallest magnitude negative subnormal with non-zero mantissa + reinterpretU64AsF64(0x0000_0000_0000_0001n), // smallest magnitude positive subnormal with non-zero mantissa + reinterpretU64AsF64(0x600a_aaaa_5555_5555n), // negative subnormal with obvious pattern + reinterpretU64AsF64(0x000a_aaaa_5555_5555n), // positive subnormal with obvious pattern + reinterpretU64AsF64(0x0010_0000_0000_0001n), // smallest magnitude negative normal with non-zero mantissa + reinterpretU64AsF64(0x0010_0000_0000_0001n), // smallest magnitude positive normal with non-zero mantissa + reinterpretU64AsF64(0xf555_5555_aaaa_aaaan), // negative normal with obvious pattern + reinterpretU64AsF64(0x5555_5555_aaaa_aaaan), // positive normal with obvious pattern + reinterpretU64AsF64(0xffef_ffff_ffff_ffffn), // largest magnitude negative normal + reinterpretU64AsF64(0x7fef_ffff_ffff_ffffn), // largest magnitude positive normal + // WebGPU implementation stressing values + ...fullF64Range(), + ]; + + return inputs.map(f => { + return { + input: abstractFloat(f), + expected: isSubnormalNumberF64(f) ? abstractFloat(0) : abstractFloat(f), + }; + }); + }, + f32: () => { + return filteredF64Range(kValue.f32.negative.min, kValue.f32.positive.max).map(f => { + return { input: abstractFloat(f), expected: FP.f32.correctlyRoundedInterval(f) }; + }); + }, + f16: () => { + return filteredF64Range(kValue.f16.negative.min, kValue.f16.positive.max).map(f => { + return { input: abstractFloat(f), expected: FP.f16.correctlyRoundedInterval(f) }; + }); + }, +}); + +g.test('abstract') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion') + .desc( + ` +testing that extracting abstract floats works +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('abstract'); + await run(t, abstract_assignment(), [TypeAbstractFloat], TypeAbstractFloat, t.params, cases, 1); + }); + +g.test('f32') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion') + .desc( + ` +concretizing to f32 +` + ) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('f32'); + await run(t, concrete_assignment(), [TypeAbstractFloat], TypeF32, t.params, cases); + }); + +g.test('f16') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-conversion') + .desc( + ` +concretizing to f16 +` + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .params(u => u.combine('inputSource', onlyConstInputSource)) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, concrete_assignment(), [TypeAbstractFloat], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/bool_conversion.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/bool_conversion.spec.js index d4fc0914650..a56b6850fd3 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/bool_conversion.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/bool_conversion.spec.js @@ -9,18 +9,22 @@ import { anyOf } from '../../../../util/compare.js'; import { bool, f32, + f16, i32, TypeBool, TypeF32, + TypeF16, TypeI32, TypeU32, u32, } from '../../../../util/conversion.js'; import { fullF32Range, + fullF16Range, fullI32Range, fullU32Range, isSubnormalNumberF32, + isSubnormalNumberF16, } from '../../../../util/math.js'; import { makeCaseCache } from '../case_cache.js'; import { allInputSources, run } from '../expression.js'; @@ -58,6 +62,18 @@ export const d = makeCaseCache('unary/bool_conversion', { return { input: f32(f), expected: anyOf(...expected) }; }); }, + f16: () => { + return fullF16Range().map(f => { + const expected = []; + if (f !== 0) { + expected.push(bool(true)); + } + if (isSubnormalNumberF16(f)) { + expected.push(bool(false)); + } + return { input: f16(f), expected: anyOf(...expected) }; + }); + }, }); /** Generate expression builder based on how the test case is to be vectorized */ @@ -139,4 +155,10 @@ The result is false if e is 0.0 or -0.0, and true otherwise. ` ) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeF16], TypeBool, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_arithmetic.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_arithmetic.spec.js new file mode 100644 index 00000000000..78ce83b4197 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_arithmetic.spec.js @@ -0,0 +1,43 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for the f16 arithmetic unary expression operations +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { TypeF16 } from '../../../../util/conversion.js'; +import { FP } from '../../../../util/floating_point.js'; +import { fullF16Range } from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { unary } from './unary.js'; + +export const g = makeTestGroup(GPUTest); + +export const d = makeCaseCache('unary/f16_arithmetic', { + negation: () => { + return FP.f16.generateScalarToIntervalCases( + fullF16Range({ neg_norm: 250, neg_sub: 20, pos_sub: 20, pos_norm: 250 }), + 'unfiltered', + FP.f16.negationInterval + ); + }, +}); + +g.test('negation') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +Expression: -x +Accuracy: Correctly rounded +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('negation'); + await run(t, unary('-'), [TypeF16], TypeF16, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_conversion.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_conversion.spec.js new file mode 100644 index 00000000000..169dd8bf424 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f16_conversion.spec.js @@ -0,0 +1,288 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Execution Tests for the f32 conversion operations +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { GPUTest } from '../../../../gpu_test.js'; +import { + bool, + f16, + i32, + TypeBool, + TypeF32, + TypeF16, + TypeI32, + TypeMat, + TypeU32, + u32, +} from '../../../../util/conversion.js'; +import { FP, FPInterval } from '../../../../util/floating_point.js'; +import { + fullF32Range, + fullF16Range, + fullI32Range, + fullU32Range, + sparseMatrixF32Range, + sparseMatrixF16Range, +} from '../../../../util/math.js'; +import { makeCaseCache } from '../case_cache.js'; +import { allInputSources, run } from '../expression.js'; + +import { unary } from './unary.js'; + +export const g = makeTestGroup(GPUTest); + +const f16FiniteRangeInterval = new FPInterval( + 'f32', + FP.f16.constants().negative.min, + FP.f16.constants().positive.max +); + +// Cases: f32_matCxR_[non_]const +// Note that f32 values may be not exactly representable in f16 and/or out of range. +const f32_mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`f32_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixToMatrixCases( + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.correctlyRoundedMatrix + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_matCxR_[non_]const +const f16_mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`f16_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + // Input matrix is of f16 types, use f16.generateMatrixToMatrixCases. + return FP.f16.generateMatrixToMatrixCases( + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f16.correctlyRoundedMatrix + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +export const d = makeCaseCache('unary/f16_conversion', { + bool: () => { + return [ + { input: bool(true), expected: f16(1.0) }, + { input: bool(false), expected: f16(0.0) }, + ]; + }, + u32_non_const: () => { + return [...fullU32Range(), 65504].map(u => { + return { input: u32(u), expected: FP.f16.correctlyRoundedInterval(u) }; + }); + }, + u32_const: () => { + return [...fullU32Range(), 65504] + .filter(v => f16FiniteRangeInterval.contains(v)) + .map(u => { + return { input: u32(u), expected: FP.f16.correctlyRoundedInterval(u) }; + }); + }, + i32_non_const: () => { + return [...fullI32Range(), 65504, -65504].map(i => { + return { input: i32(i), expected: FP.f16.correctlyRoundedInterval(i) }; + }); + }, + i32_const: () => { + return [...fullI32Range(), 65504, -65504] + .filter(v => f16FiniteRangeInterval.contains(v)) + .map(i => { + return { input: i32(i), expected: FP.f16.correctlyRoundedInterval(i) }; + }); + }, + // Note that f32 values may be not exactly representable in f16 and/or out of range. + f32_non_const: () => { + return FP.f32.generateScalarToIntervalCases( + [...fullF32Range(), 65535.996, -65535.996], + 'unfiltered', + FP.f16.correctlyRoundedInterval + ); + }, + f32_const: () => { + return FP.f32.generateScalarToIntervalCases( + [...fullF32Range(), 65535.996, -65535.996], + 'finite', + FP.f16.correctlyRoundedInterval + ); + }, + // All f16 values are exactly representable in f16. + f16: () => { + return fullF16Range().map(f => { + return { input: f16(f), expected: FP.f16.correctlyRoundedInterval(f) }; + }); + }, + ...f32_mat_cases, + ...f16_mat_cases, +}); + +/** Generate a ShaderBuilder based on how the test case is to be vectorized */ +function vectorizeToExpression(vectorize) { + return vectorize === undefined ? unary('f16') : unary(`vec${vectorize}`); +} + +/** Generate a ShaderBuilder for a matrix of the provided dimensions */ +function matrixExperession(cols, rows) { + return unary(`mat${cols}x${rows}`); +} + +g.test('bool') + .specURL('https://www.w3.org/TR/WGSL/#value-constructor-builtin-function') + .desc( + ` +f16(e), where e is a bool + +The result is 1.0 if e is true and 0.0 otherwise +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('bool'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeBool], TypeF16, t.params, cases); + }); + +g.test('u32') + .specURL('https://www.w3.org/TR/WGSL/#bool-builtin') + .desc( + ` +f16(e), where e is a u32 + +Converted to f16, +/-Inf if out of range +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'u32_const' : 'u32_non_const'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeU32], TypeF16, t.params, cases); + }); + +g.test('i32') + .specURL('https://www.w3.org/TR/WGSL/#value-constructor-builtin-function') + .desc( + ` +f16(e), where e is a i32 + +Converted to f16, +/-Inf if out of range +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'i32_const' : 'i32_non_const'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeI32], TypeF16, t.params, cases); + }); + +g.test('f32') + .specURL('https://www.w3.org/TR/WGSL/#value-constructor-builtin-function') + .desc( + ` +f16(e), where e is a f32 + +Correctly rounded to f16 +` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get(t.params.inputSource === 'const' ? 'f32_const' : 'f32_non_const'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeF32], TypeF16, t.params, cases); + }); + +g.test('f32_mat') + .specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions') + .desc(`f32 matrix to f16 matrix tests`) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `f32_mat${cols}x${rows}_const` + : `f32_mat${cols}x${rows}_non_const` + ); + + await run( + t, + matrixExperession(cols, rows), + [TypeMat(cols, rows, TypeF32)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); + +g.test('f16') + .specURL('https://www.w3.org/TR/WGSL/#value-constructor-builtin-function') + .desc( + ` + f16(e), where e is a f16 + + Identical. + ` + ) + .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeF16], TypeF16, t.params, cases); + }); + +g.test('f16_mat') + .specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions') + .desc(`f16 matrix to f16 matrix tests, expected identical`) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `f16_mat${cols}x${rows}_const` + : `f16_mat${cols}x${rows}_non_const` + ); + + await run( + t, + matrixExperession(cols, rows), + [TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF16), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f32_conversion.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f32_conversion.spec.js index 2e884915447..b1902e4d51d 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f32_conversion.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/f32_conversion.spec.js @@ -8,9 +8,11 @@ import { GPUTest } from '../../../../gpu_test.js'; import { bool, f32, + f16, i32, TypeBool, TypeF32, + TypeF16, TypeI32, TypeMat, TypeU32, @@ -19,9 +21,11 @@ import { import { FP } from '../../../../util/floating_point.js'; import { fullF32Range, + fullF16Range, fullI32Range, fullU32Range, sparseMatrixF32Range, + sparseMatrixF16Range, } from '../../../../util/math.js'; import { makeCaseCache } from '../case_cache.js'; import { allInputSources, run } from '../expression.js'; @@ -30,6 +34,42 @@ import { unary } from './unary.js'; export const g = makeTestGroup(GPUTest); +// Cases: f32_matCxR_[non_]const +const f32_mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`f32_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + return FP.f32.generateMatrixToMatrixCases( + sparseMatrixF32Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.correctlyRoundedMatrix + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + +// Cases: f16_matCxR_[non_]const +// Note that all f16 values are exactly representable in f32. +const f16_mat_cases = [2, 3, 4] + .flatMap(cols => + [2, 3, 4].flatMap(rows => + [true, false].map(nonConst => ({ + [`f16_mat${cols}x${rows}_${nonConst ? 'non_const' : 'const'}`]: () => { + // Input matrix is of f16 types, use f16.generateMatrixToMatrixCases. + return FP.f16.generateMatrixToMatrixCases( + sparseMatrixF16Range(cols, rows), + nonConst ? 'unfiltered' : 'finite', + FP.f32.correctlyRoundedMatrix + ); + }, + })) + ) + ) + .reduce((a, b) => ({ ...a, ...b }), {}); + export const d = makeCaseCache('unary/f32_conversion', { bool: () => { return [ @@ -52,132 +92,14 @@ export const d = makeCaseCache('unary/f32_conversion', { return { input: f32(f), expected: FP.f32.correctlyRoundedInterval(f) }; }); }, - f32_mat2x2_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 2), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat2x2_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 2), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat2x3_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 3), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat2x3_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 3), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat2x4_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 4), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat2x4_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(2, 4), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat3x2_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 2), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat3x2_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 2), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat3x3_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 3), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat3x3_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 3), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat3x4_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 4), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat3x4_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(3, 4), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat4x2_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 2), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat4x2_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 2), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat4x3_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 3), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat4x3_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 3), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat4x4_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 4), - 'finite', - FP.f32.correctlyRoundedMatrix - ); - }, - f32_mat4x4_non_const: () => { - return FP.f32.generateMatrixToMatrixCases( - sparseMatrixF32Range(4, 4), - 'unfiltered', - FP.f32.correctlyRoundedMatrix - ); + // All f16 values are exactly representable in f32. + f16: () => { + return fullF16Range().map(f => { + return { input: f16(f), expected: FP.f32.correctlyRoundedInterval(f) }; + }); }, + ...f32_mat_cases, + ...f16_mat_cases, }); /** Generate a ShaderBuilder based on how the test case is to be vectorized */ @@ -279,10 +201,44 @@ g.test('f16') .specURL('https://www.w3.org/TR/WGSL/#value-constructor-builtin-function') .desc( ` -i32(e), where e is a f16 + f32(e), where e is a f16 -e is converted to u32, rounding towards zero -` + Expect the same value, since all f16 values is exactly representable in f32. + ` ) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeF16], TypeF32, t.params, cases); + }); + +g.test('f16_mat') + .specURL('https://www.w3.org/TR/WGSL/#matrix-builtin-functions') + .desc(`f16 matrix to f32 matrix tests`) + .params(u => + u.combine('inputSource', allInputSources).combine('cols', [2, 3, 4]).combine('rows', [2, 3, 4]) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase({ requiredFeatures: ['shader-f16'] }); + }) + .fn(async t => { + const cols = t.params.cols; + const rows = t.params.rows; + const cases = await d.get( + t.params.inputSource === 'const' + ? `f16_mat${cols}x${rows}_const` + : `f16_mat${cols}x${rows}_non_const` + ); + + await run( + t, + matrixExperession(cols, rows), + [TypeMat(cols, rows, TypeF16)], + TypeMat(cols, rows, TypeF32), + t.params, + cases + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/i32_conversion.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/i32_conversion.spec.js index 0b44e5a83fe..b76b7e1466d 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/i32_conversion.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/i32_conversion.spec.js @@ -9,15 +9,24 @@ import { kValue } from '../../../../util/constants.js'; import { bool, f32, + f16, i32, reinterpretU32AsI32, TypeBool, TypeF32, + TypeF16, TypeI32, TypeU32, u32, } from '../../../../util/conversion.js'; -import { fullF32Range, fullI32Range, fullU32Range, quantizeToF32 } from '../../../../util/math.js'; +import { + fullF32Range, + fullF16Range, + fullI32Range, + fullU32Range, + quantizeToF32, + quantizeToF16, +} from '../../../../util/math.js'; import { makeCaseCache } from '../case_cache.js'; import { allInputSources, run } from '../expression.js'; @@ -57,8 +66,8 @@ export const d = makeCaseCache('unary/i32_conversion', { return { input: f32(f), expected: i32(kValue.i32.positive.max) }; } - // All integers <= 2^24 are precisely representable as f32, so just need - // to round towards 0 for the nearest integer to 0 from f. + // All f32 no larger than 2^24 has a precise interger part and a fractional part, just need + // to trunc towards 0 for the result integer. if (Math.abs(f) <= 2 ** 24) { return { input: f32(f), expected: i32(Math.trunc(f)) }; } @@ -71,6 +80,27 @@ export const d = makeCaseCache('unary/i32_conversion', { return { input: f32(f), expected: i32(quantizeToF32(f)) }; }); }, + f16: () => { + // Note that finite f16 values are always in range of i32. + return fullF16Range().map(f => { + // Handles zeros and subnormals + if (Math.abs(f) < 1.0) { + return { input: f16(f), expected: i32(0) }; + } + + // All f16 no larger than <= 2^12 has a precise interger part and a fractional part, just need + // to trunc towards 0 for the result integer. + if (Math.abs(f) <= 2 ** 12) { + return { input: f16(f), expected: i32(Math.trunc(f)) }; + } + + // All f16s larger than 2 ** 12 are integers, so in theory one could use them directly, expect + // that number is actually f64 internally, so they need to be quantized to f16 first. + // Cannot just use trunc here, since that might produce a i32 value that is precise in f64, + // but not in f16. + return { input: f16(f), expected: i32(quantizeToF16(f)) }; + }); + }, }); /** Generate a ShaderBuilder based on how the test case is to be vectorized */ @@ -148,4 +178,10 @@ e is converted to u32, rounding towards zero ` ) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeF16], TypeI32, t.params, cases); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/u32_conversion.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/u32_conversion.spec.js index 6d1f3c297ff..573d9478d90 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/u32_conversion.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/u32_conversion.spec.js @@ -9,15 +9,24 @@ import { kValue } from '../../../../util/constants.js'; import { bool, f32, + f16, i32, reinterpretI32AsU32, TypeBool, TypeF32, + TypeF16, TypeI32, TypeU32, u32, } from '../../../../util/conversion.js'; -import { fullF32Range, fullI32Range, fullU32Range, quantizeToF32 } from '../../../../util/math.js'; +import { + fullF32Range, + fullF16Range, + fullI32Range, + fullU32Range, + quantizeToF32, + quantizeToF16, +} from '../../../../util/math.js'; import { makeCaseCache } from '../case_cache.js'; import { allInputSources, run } from '../expression.js'; @@ -53,8 +62,8 @@ export const d = makeCaseCache('unary/u32_conversion', { return { input: f32(f), expected: u32(kValue.u32.max) }; } - // All integers <= 2^24 are precisely representable as f32, so just need - // to round towards 0 for the nearest integer to 0 from f. + // All f32 no larger than 2^24 has a precise interger part and a fractional part, just need + // to trunc towards 0 for the result integer. if (f <= 2 ** 24) { return { input: f32(f), expected: u32(Math.floor(f)) }; } @@ -67,6 +76,27 @@ export const d = makeCaseCache('unary/u32_conversion', { return { input: f32(f), expected: u32(quantizeToF32(f)) }; }); }, + f16: () => { + // Note that all positive finite f16 values are in range of u32. + return fullF16Range().map(f => { + // Handles zeros, subnormals, and negatives + if (f < 1.0) { + return { input: f16(f), expected: u32(0) }; + } + + // All f16 no larger than <= 2^12 has a precise interger part and a fractional part, just need + // to trunc towards 0 for the result integer. + if (f <= 2 ** 12) { + return { input: f16(f), expected: u32(Math.trunc(f)) }; + } + + // All f16s larger than 2 ** 12 are integers, so in theory one could use them directly, expect + // that number is actually f64 internally, so they need to be quantized to f16 first. + // Cannot just use trunc here, since that might produce a u32 value that is precise in f64, + // but not in f16. + return { input: f16(f), expected: u32(quantizeToF16(f)) }; + }); + }, }); /** Generate a ShaderBuilder based on how the test case is to be vectorized */ @@ -144,7 +174,13 @@ e is converted to u32, rounding towards zero ` ) .params(u => u.combine('inputSource', allInputSources).combine('vectorize', [undefined, 2, 3, 4])) - .unimplemented(); + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(async t => { + const cases = await d.get('f16'); + await run(t, vectorizeToExpression(t.params.vectorize), [TypeF16], TypeU32, t.params, cases); + }); g.test('abstract_int') .specURL('https://www.w3.org/TR/WGSL/#value-constructor-builtin-function') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js index 4e91cf8634a..1bd494f92fc 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js @@ -1,10 +1,13 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { basicExpressionBuilder } from '../expression.js'; /* @returns a ShaderBuilder that evaluates a prefix unary operation */ + **/ import { abstractFloatShaderBuilder, basicExpressionBuilder } from '../expression.js'; + +/* @returns a ShaderBuilder that evaluates a prefix unary operation */ export function unary(op) { return basicExpressionBuilder(value => `${op}(${value})`); } -export function assignment() { - return basicExpressionBuilder(value => `${value}`); +/* @returns a ShaderBuilder that evaluates a prefix unary operation that returns AbstractFloats */ +export function abstractUnary(op) { + return abstractFloatShaderBuilder(value => `${op}(${value})`); } diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/robust_access.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/robust_access.spec.js index f7d8de63b9d..903637ef4d2 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/robust_access.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/robust_access.spec.js @@ -117,35 +117,35 @@ g.test('linear_memory') .params(u => u .combineWithParams([ - { storageClass: 'storage', storageMode: 'read', access: 'read', dynamicOffset: false }, + { addressSpace: 'storage', storageMode: 'read', access: 'read', dynamicOffset: false }, { - storageClass: 'storage', + addressSpace: 'storage', storageMode: 'read_write', access: 'read', dynamicOffset: false, }, { - storageClass: 'storage', + addressSpace: 'storage', storageMode: 'read_write', access: 'write', dynamicOffset: false, }, - { storageClass: 'storage', storageMode: 'read', access: 'read', dynamicOffset: true }, - { storageClass: 'storage', storageMode: 'read_write', access: 'read', dynamicOffset: true }, + { addressSpace: 'storage', storageMode: 'read', access: 'read', dynamicOffset: true }, + { addressSpace: 'storage', storageMode: 'read_write', access: 'read', dynamicOffset: true }, { - storageClass: 'storage', + addressSpace: 'storage', storageMode: 'read_write', access: 'write', dynamicOffset: true, }, - { storageClass: 'uniform', access: 'read', dynamicOffset: false }, - { storageClass: 'uniform', access: 'read', dynamicOffset: true }, - { storageClass: 'private', access: 'read' }, - { storageClass: 'private', access: 'write' }, - { storageClass: 'function', access: 'read' }, - { storageClass: 'function', access: 'write' }, - { storageClass: 'workgroup', access: 'read' }, - { storageClass: 'workgroup', access: 'write' }, + { addressSpace: 'uniform', access: 'read', dynamicOffset: false }, + { addressSpace: 'uniform', access: 'read', dynamicOffset: true }, + { addressSpace: 'private', access: 'read' }, + { addressSpace: 'private', access: 'write' }, + { addressSpace: 'function', access: 'read' }, + { addressSpace: 'function', access: 'write' }, + { addressSpace: 'workgroup', access: 'read' }, + { addressSpace: 'workgroup', access: 'write' }, ]) .combineWithParams([ { containerType: 'array' }, @@ -164,7 +164,7 @@ g.test('linear_memory') ) .fn(t => { const { - storageClass, + addressSpace, storageMode, access, dynamicOffset, @@ -197,14 +197,14 @@ struct S { };`; const testGroupBGLEntires = []; - switch (storageClass) { + switch (addressSpace) { case 'uniform': case 'storage': { assert(_kTypeInfo.layout !== undefined); const layout = _kTypeInfo.layout; bufferBindingSize = align(layout.size, layout.alignment); - const qualifiers = storageClass === 'storage' ? `storage, ${storageMode}` : storageClass; + const qualifiers = addressSpace === 'storage' ? `storage, ${storageMode}` : addressSpace; globalSource += ` struct TestData { data: ${type}, @@ -216,7 +216,7 @@ struct TestData { visibility: GPUShaderStage.COMPUTE, buffer: { type: - storageClass === 'uniform' + addressSpace === 'uniform' ? 'uniform' : storageMode === 'read' ? 'read-only-storage' @@ -231,7 +231,7 @@ struct TestData { case 'workgroup': usesCanary = true; globalSource += structDecl; - globalSource += `var<${storageClass}> s: S;`; + globalSource += `var<${addressSpace}> s: S;`; break; case 'function': @@ -308,7 +308,7 @@ struct TestData { case 'read': { let exprLoadElement = isAtomic ? `atomicLoad(&${exprElement})` : exprElement; - if (storageClass === 'uniform' && containerType === 'array') { + if (addressSpace === 'uniform' && containerType === 'array') { // Scalar types will be wrapped in a vec4 to satisfy array element size // requirements for the uniform address space, so we need an additional index // accessor expression. diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/zero_init.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/zero_init.spec.js index 1ce57613282..98f3edf5209 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/zero_init.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/execution/zero_init.spec.js @@ -45,9 +45,9 @@ g.test('compute,zero_init') u // Only workgroup, function, and private variables can be declared without data bound to them. // The implementation's shader translator should ensure these values are initialized. - .combine('storageClass', ['workgroup', 'private', 'function']) - .expand('workgroupSize', ({ storageClass }) => { - switch (storageClass) { + .combine('addressSpace', ['workgroup', 'private', 'function']) + .expand('workgroupSize', ({ addressSpace }) => { + switch (addressSpace) { case 'workgroup': return [ [1, 1, 1], @@ -281,10 +281,10 @@ g.test('compute,zero_init') } })('TestType', t.params._type); - switch (t.params.storageClass) { + switch (t.params.addressSpace) { case 'workgroup': case 'private': - moduleScope += `\nvar<${t.params.storageClass}> testVar: ${typeDecl};`; + moduleScope += `\nvar<${t.params.addressSpace}> testVar: ${typeDecl};`; break; case 'function': functionScope += `\nvar testVar: ${typeDecl};`; @@ -381,7 +381,7 @@ g.test('compute,zero_init') } `; - if (t.params.storageClass === 'workgroup') { + if (t.params.addressSpace === 'workgroup') { // Populate the maximum amount of workgroup memory with known values to // ensure initialization overrides in another shader. const wg_memory_limits = t.device.limits.maxComputeWorkgroupStorageSize; @@ -409,8 +409,24 @@ g.test('compute,zero_init') } `; + const fillLayout = t.device.createBindGroupLayout({ + entries: [ + { + binding: 0, + visibility: GPUShaderStage.COMPUTE, + buffer: { type: 'read-only-storage' }, + }, + { + binding: 1, + visibility: GPUShaderStage.COMPUTE, + buffer: { type: 'storage' }, + }, + ], + }); + const fillPipeline = t.device.createComputePipeline({ - layout: 'auto', + layout: t.device.createPipelineLayout({ bindGroupLayouts: [fillLayout] }), + label: 'Workgroup Fill Pipeline', compute: { module: t.device.createShaderModule({ code: wgsl, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/types.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/types.js index ef27fe65656..0c8cf724bb5 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/types.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/types.js @@ -47,6 +47,57 @@ export const kMatrixContainerTypeInfo = { /** List of all matNxN<> container types. */ export const kMatrixContainerTypes = keysOf(kMatrixContainerTypeInfo); +export const kAccessModeInfo = { + read: { read: true, write: false }, + write: { read: false, write: true }, + read_write: { read: true, write: true }, +}; + +export const kAddressSpaceInfo = { + storage: { + scope: 'module', + binding: true, + spell: 'must', + accessModes: ['read', 'read_write'], + spellAccessMode: 'may', + }, + uniform: { + scope: 'module', + binding: true, + spell: 'must', + accessModes: ['read'], + spellAccessMode: 'never', + }, + private: { + scope: 'module', + binding: false, + spell: 'must', + accessModes: ['read_write'], + spellAccessMode: 'never', + }, + workgroup: { + scope: 'module', + binding: false, + spell: 'must', + accessModes: ['read_write'], + spellAccessMode: 'never', + }, + function: { + scope: 'function', + binding: false, + spell: 'may', + accessModes: ['read_write'], + spellAccessMode: 'never', + }, + handle: { + scope: 'module', + binding: true, + spell: 'never', + accessModes: [], + spellAccessMode: 'never', + }, +}; + /** List of texel formats and their shader representation */ export const TexelFormats = [ { format: 'rgba8unorm', _shaderType: 'f32' }, @@ -70,7 +121,7 @@ export const TexelFormats = [ /** * Generate a bunch types (vec, mat, sized/unsized array) for testing. */ -export function* generateTypes({ storageClass, baseType, containerType, isAtomic = false }) { +export function* generateTypes({ addressSpace, baseType, containerType, isAtomic = false }) { const scalarInfo = kScalarTypeInfo[baseType]; if (isAtomic) { assert(scalarInfo.supportsAtomics, 'type does not support atomics'); @@ -78,7 +129,7 @@ export function* generateTypes({ storageClass, baseType, containerType, isAtomic const scalarType = isAtomic ? `atomic<${baseType}>` : baseType; // Storage and uniform require host-sharable types. - if (storageClass === 'storage' || storageClass === 'uniform') { + if (addressSpace === 'storage' || addressSpace === 'uniform') { assert(isHostSharable(baseType), 'type ' + baseType.toString() + ' is not host sharable'); } @@ -128,7 +179,7 @@ export function* generateTypes({ storageClass, baseType, containerType, isAtomic ? { alignment: scalarInfo.layout.alignment, size: - storageClass === 'uniform' + addressSpace === 'uniform' ? // Uniform storage class must have array elements aligned to 16. kArrayLength * arrayStride({ @@ -141,7 +192,7 @@ export function* generateTypes({ storageClass, baseType, containerType, isAtomic }; // Sized - if (storageClass === 'uniform') { + if (addressSpace === 'uniform') { yield { type: `array,${kArrayLength}>`, _kTypeInfo: arrayTypeInfo, @@ -150,7 +201,7 @@ export function* generateTypes({ storageClass, baseType, containerType, isAtomic yield { type: `array<${scalarType},${kArrayLength}>`, _kTypeInfo: arrayTypeInfo }; } // Unsized - if (storageClass === 'storage') { + if (addressSpace === 'storage') { yield { type: `array<${scalarType}>`, _kTypeInfo: arrayTypeInfo }; } } @@ -170,8 +221,8 @@ export function* generateTypes({ storageClass, baseType, containerType, isAtomic /** Atomic access requires scalar/array container type and storage/workgroup memory. */ export function supportsAtomics(p) { return ( - ((p.storageClass === 'storage' && p.storageMode === 'read_write') || - p.storageClass === 'workgroup') && + ((p.addressSpace === 'storage' && p.storageMode === 'read_write') || + p.addressSpace === 'workgroup') && (p.containerType === 'scalar' || p.containerType === 'array') ); } @@ -185,7 +236,7 @@ export function* supportedScalarTypes(p) { if (p.isAtomic && !info.supportsAtomics) continue; // Storage and uniform require host-sharable types. - const isHostShared = p.storageClass === 'storage' || p.storageClass === 'uniform'; + const isHostShared = p.addressSpace === 'storage' || p.addressSpace === 'uniform'; if (isHostShared && info.layout === undefined) continue; yield scalarType; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/const_assert/const_assert.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/const_assert/const_assert.spec.js index 735f26f72df..b7b7a89136c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/const_assert/const_assert.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/const_assert/const_assert.spec.js @@ -8,29 +8,47 @@ import { ShaderValidationTest } from '../shader_validation_test.js'; export const g = makeTestGroup(ShaderValidationTest); /** - * Builds a const_assert() statement, which checks that @p expr is equal to @p expect_true. - * @param expect_true true if @p expr should evaluate to true + * Builds a const_assert() statement. * @param expr the constant expression * @param scope module-scope or function-scope constant expression * @returns the WGSL code */ -function buildStaticAssert(expect_true, expr, scope) { - const stmt = expect_true ? `const_assert ${expr};` : `const_assert !(${expr});`; +function buildStaticAssert(expr, scope) { + const stmt = `const_assert (${expr});`; return scope === 'module' ? stmt : `fn f() { ${stmt} }`; } const kConditionCases = { - true_literal: `true`, - not_false: `!false`, - const_eq_literal_int: `one == 1`, - const_eq_literal_float: `one == 1.0`, - binary_op_eq_const: `one+1 == two`, - any: `any(vec3(false, true, false))`, - min_max: `min(three, max(two, one)) == 2`, + any_false: { expr: `any(vec3(false, false, false))`, val: false }, + any_true: { expr: `any(vec3(false, true, false))`, val: true }, + binary_op_eq_const_false: { expr: `one + 5 == two`, val: false }, + binary_op_eq_const_true: { expr: `one + 1 == two`, val: true }, + const_eq_literal_float_false: { expr: `one == 0.0`, val: false }, + const_eq_literal_float_true: { expr: `one == 1.0`, val: true }, + const_eq_literal_int_false: { expr: `one == 10`, val: false }, + const_eq_literal_int_true: { expr: `one == 1`, val: true }, + literal_false: { expr: `false`, val: false }, + literal_not_false: { expr: `!false`, val: true }, + literal_not_true: { expr: `!true`, val: false }, + literal_true: { expr: `true`, val: true }, + min_max_false: { expr: `min(three, max(two, one)) == 3`, val: false }, + min_max_true: { expr: `min(three, max(two, one)) == 2`, val: true }, + variable_false: { expr: `is_false`, val: false }, + variable_not_false: { expr: `!is_false`, val: true }, + variable_not_true: { expr: `!is_true`, val: false }, + variable_true: { expr: `is_true`, val: true }, }; -g.test('constant_expression') - .desc(`Test that const_assert validates the condition expression.`) +const kConditionConstants = ` +const one = 1; +const two = 2; +const three = 3; +const is_true = true; +const is_false = false; +`; + +g.test('constant_expression_no_assert') + .desc(`Test that const_assert does not assert on a true conditional expression`) .params(u => u .combine('case', keysOf(kConditionCases)) @@ -38,14 +56,117 @@ g.test('constant_expression') .beginSubcases() ) .fn(t => { - const constants = ` -const one = 1; -const two = 2; -const three = 2; -`; - const expr = kConditionCases[t.params.case]; - t.expectCompileResult(true, constants + buildStaticAssert(true, expr, t.params.scope)); - t.expectCompileResult(false, constants + buildStaticAssert(false, expr, t.params.scope)); + const expr = kConditionCases[t.params.case].expr; + const val = kConditionCases[t.params.case].val; + t.expectCompileResult( + true, + kConditionConstants + buildStaticAssert(val ? expr : `!(${expr})`, t.params.scope) + ); + }); + +g.test('constant_expression_assert') + .desc(`Test that const_assert does assert on a false conditional expression`) + .params(u => + u + .combine('case', keysOf(kConditionCases)) + .combine('scope', ['module', 'function']) + .beginSubcases() + ) + .fn(t => { + const expr = kConditionCases[t.params.case].expr; + const val = kConditionCases[t.params.case].val; + t.expectCompileResult( + false, + kConditionConstants + buildStaticAssert(val ? `!(${expr})` : expr, t.params.scope) + ); + }); + +g.test('constant_expression_logical_or_no_assert') + .desc( + `Test that const_assert does not assert on a condition expression that contains a logical-or which evaluates to true` + ) + .params(u => + u + .combine('lhs', keysOf(kConditionCases)) + .combine('rhs', keysOf(kConditionCases)) + .combine('scope', ['module', 'function']) + .beginSubcases() + ) + .fn(t => { + const expr = `(${kConditionCases[t.params.lhs].expr}) || (${ + kConditionCases[t.params.rhs].expr + })`; + const val = kConditionCases[t.params.lhs].val || kConditionCases[t.params.rhs].val; + t.expectCompileResult( + true, + kConditionConstants + buildStaticAssert(val ? expr : `!(${expr})`, t.params.scope) + ); + }); + +g.test('constant_expression_logical_or_assert') + .desc( + `Test that const_assert does assert on a condition expression that contains a logical-or which evaluates to false` + ) + .params(u => + u + .combine('lhs', keysOf(kConditionCases)) + .combine('rhs', keysOf(kConditionCases)) + .combine('scope', ['module', 'function']) + .beginSubcases() + ) + .fn(t => { + const expr = `(${kConditionCases[t.params.lhs].expr}) || (${ + kConditionCases[t.params.rhs].expr + })`; + const val = kConditionCases[t.params.lhs].val || kConditionCases[t.params.rhs].val; + t.expectCompileResult( + false, + kConditionConstants + buildStaticAssert(val ? `!(${expr})` : expr, t.params.scope) + ); + }); + +g.test('constant_expression_logical_and_no_assert') + .desc( + `Test that const_assert does not assert on a condition expression that contains a logical-and which evaluates to true` + ) + .params(u => + u + .combine('lhs', keysOf(kConditionCases)) + .combine('rhs', keysOf(kConditionCases)) + .combine('scope', ['module', 'function']) + .beginSubcases() + ) + .fn(t => { + const expr = `(${kConditionCases[t.params.lhs].expr}) && (${ + kConditionCases[t.params.rhs].expr + })`; + const val = kConditionCases[t.params.lhs].val && kConditionCases[t.params.rhs].val; + t.expectCompileResult( + true, + kConditionConstants + buildStaticAssert(val ? expr : `!(${expr})`, t.params.scope) + ); + }); + +g.test('constant_expression_logical_and_assert') + .desc( + `Test that const_assert does assert on a condition expression that contains a logical-and which evaluates to false` + ) + .params(u => + u + .combine('lhs', keysOf(kConditionCases)) + .combine('rhs', keysOf(kConditionCases)) + .combine('scope', ['module', 'function']) + .beginSubcases() + ) + .fn(t => { + const expr = `(${kConditionCases[t.params.lhs].expr}) && (${ + kConditionCases[t.params.rhs].expr + })`; + const val = kConditionCases[t.params.lhs].val && kConditionCases[t.params.rhs].val; + t.expectCompileResult( + false, + kConditionConstants + buildStaticAssert(val ? `!(${expr})` : expr, t.params.scope) + ); }); g.test('evaluation_stage') @@ -57,7 +178,7 @@ g.test('evaluation_stage') .beginSubcases() ) .fn(t => { - const staticAssert = buildStaticAssert(true, 'value', t.params.scope); + const staticAssert = buildStaticAssert('value', t.params.scope); switch (t.params.stage) { case 'constant': t.expectCompileResult(true, `const value = true;\n${staticAssert}`); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/const.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/const.spec.js new file mode 100644 index 00000000000..547aa93be81 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/const.spec.js @@ -0,0 +1,62 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation tests for const declarations +`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('no_direct_recursion') + .desc('Test that direct recursion of const declarations is rejected') + .params(u => u.combine('target', ['a', 'b'])) + .fn(t => { + const wgsl = ` +const a : i32 = 42; +const b : i32 = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'a', wgsl); + }); + +g.test('no_indirect_recursion') + .desc('Test that indirect recursion of const declarations is rejected') + .params(u => u.combine('target', ['a', 'b'])) + .fn(t => { + const wgsl = ` +const a : i32 = 42; +const b : i32 = c; +const c : i32 = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'a', wgsl); + }); + +g.test('no_indirect_recursion_via_array_size') + .desc('Test that indirect recursion of const declarations via array size expressions is rejected') + .params(u => u.combine('target', ['a', 'b'])) + .fn(t => { + const wgsl = ` +const a = 4; +const b = c[0]; +const c = array(4, 4, 4, 4); +`; + t.expectCompileResult(t.params.target === 'a', wgsl); + }); + +g.test('no_indirect_recursion_via_struct_attribute') + .desc('Test that indirect recursion of const declarations via struct members is rejected') + .params(u => + u // + .combine('target', ['a', 'b']) + .combine('attribute', ['align', 'location', 'size']) + ) + .fn(t => { + const wgsl = ` +struct S { + @${t.params.attribute}(${t.params.target}) a : i32 +} +const a = 4; +const b = S(4).a; +`; + t.expectCompileResult(t.params.target === 'a', wgsl); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/override.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/override.spec.js new file mode 100644 index 00000000000..96a26f20fd6 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/override.spec.js @@ -0,0 +1,32 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation tests for override declarations +`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('no_direct_recursion') + .desc('Test that direct recursion of override declarations is rejected') + .params(u => u.combine('target', ['a', 'b'])) + .fn(t => { + const wgsl = ` +override a : i32 = 42; +override b : i32 = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'a', wgsl); + }); + +g.test('no_indirect_recursion') + .desc('Test that indirect recursion of override declarations is rejected') + .params(u => u.combine('target', ['a', 'b'])) + .fn(t => { + const wgsl = ` +override a : i32 = 42; +override b : i32 = c; +override c : i32 = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'a', wgsl); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/ptr_spelling.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/ptr_spelling.spec.js new file mode 100644 index 00000000000..f06b81188e8 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/ptr_spelling.spec.js @@ -0,0 +1,150 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validate spelling of pointer types. + +Pointer types may appear. + +They are parameterized by: +- address space, always +- store type +- and access mode, as specified by the table in Address Spaces. + Concretely, only 'storage' address space allows it, and allows 'read', and 'read_write'. + +A pointer type can be spelled only if it corresponds to a variable that could be +declared in the program. So we need to test combinations against possible variable +declarations. +`; // This file tests spelling of the pointer type on let-declared pointers. +// +// Spelling of pointer-typed parameters on user-declared functions is tested by +// webgpu:shader,validation,functions,restrictions:function_parameter_types:"*" + +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { kAccessModeInfo, kAddressSpaceInfo } from '../../types.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +import { + pointerType, + explicitSpaceExpander, + accessModeExpander, + getVarDeclShader, + supportsWrite, +} from './util.js'; + +// Address spaces that can hold an i32 variable. +const kNonHandleAddressSpaces = keysOf(kAddressSpaceInfo).filter(as => as !== 'handle'); + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('let_ptr_explicit_type_matches_var') + .desc( + 'Let-declared pointer with explicit type initialized from var with same address space and access mode' + ) + .specURL('https://w3.org/TR#ref-ptr-types') + .params(u => + u // Generate non-handle variables in all valid permutations of address space and access mode. + .combine('addressSpace', kNonHandleAddressSpaces) + .expand('explicitSpace', explicitSpaceExpander) + .combine('explicitAccess', [false, true]) + .expand('accessMode', accessModeExpander) + .combine('stage', ['compute']) // Only need to check compute shaders + // Vary the store type. + .combine('ptrStoreType', ['i32', 'u32']) + ) + .fn(t => { + // Match the address space and access mode. + const prog = getVarDeclShader(t.params, `let p: ${pointerType(t.params)} = &x;`); + const ok = t.params.ptrStoreType === 'i32'; // The store type matches the variable's store type. + + t.expectCompileResult(ok, prog); + }); + +g.test('let_ptr_reads') + .desc('Validate reading via ptr when permitted by access mode') + .params(u => + u // Generate non-handle variables in all valid permutations of address space and access mode. + .combine('addressSpace', kNonHandleAddressSpaces) + .expand('explicitSpace', explicitSpaceExpander) + .combine('explicitAccess', [false, true]) + .expand('accessMode', accessModeExpander) + .combine('stage', ['compute']) // Only need to check compute shaders + .combine('inferPtrType', [false, true]) + .combine('ptrStoreType', ['i32']) + ) + .fn(t => { + // Try reading through the pointer. + const typePart = t.params.inferPtrType ? `: ${pointerType(t.params)}` : ''; + const prog = getVarDeclShader(t.params, `let p${typePart} = &x; let read = *p;`); + const ok = true; // We can always read. + + t.expectCompileResult(ok, prog); + }); + +g.test('let_ptr_writes') + .desc('Validate writing via ptr when permitted by access mode') + .specURL('https://w3.org/TR#ref-ptr-types') + .params(u => + u // Generate non-handle variables in all valid permutations of address space and access mode. + .combine('addressSpace', kNonHandleAddressSpaces) + .expand('explicitSpace', explicitSpaceExpander) + .combine('explicitAccess', [false, true]) + .expand('accessMode', accessModeExpander) + .combine('stage', ['compute']) // Only need to check compute shaders + .combine('inferPtrType', [false, true]) + .combine('ptrStoreType', ['i32']) + ) + .fn(t => { + // Try writing through the pointer. + const typePart = t.params.inferPtrType ? `: ${pointerType(t.params)}` : ''; + const prog = getVarDeclShader(t.params, `let p${typePart} = &x; *p = 42;`); + const ok = supportsWrite(t.params); + + t.expectCompileResult(ok, prog); + }); + +g.test('ptr_handle_space_invalid').fn(t => { + t.expectCompileResult(false, 'alias p = ptr;'); +}); + +g.test('ptr_bad_store_type') + .params(u => u.combine('storeType', ['undeclared', 'clamp', '1'])) + .fn(t => { + t.expectCompileResult(false, `alias p = ptr;`); + }); + +g.test('ptr_address_space_never_uses_access_mode') + .params(u => + u + .combine( + 'addressSpace', + keysOf(kAddressSpaceInfo).filter(i => kAddressSpaceInfo[i].spellAccessMode === 'never') + ) + .combine('accessMode', keysOf(kAccessModeInfo)) + ) + .fn(t => { + const prog = `alias pty = ptr<${t.params.addressSpace},u32,;${t.params.accessMode}>;`; + t.expectCompileResult(false, prog); + }); + +const kStoreTypeNotInstantiable = { + ptr: 'alias p = ptr>;', + privateAtomic: 'alias p = ptr>;', + functionAtomic: 'alias p = ptr>;', + uniformAtomic: 'alias p = ptr>;', + workgroupRTArray: 'alias p = ptr>;', + uniformRTArray: 'alias p = ptr>;', + privateRTArray: 'alias p = ptr>;', + functionRTArray: 'alias p = ptr>;', + RTArrayNotLast: 'struct S { a: array, b: i32 } alias p = ptr;', + nestedRTArray: 'struct S { a: array, b: i32 } struct { s: S } alias p = ptr;', +}; + +g.test('ptr_not_instantiable') + .desc( + 'Validate that ptr type must correspond to a variable that could be declared somewhere; test bad cases' + ) + .params(u => u.combine('case', keysOf(kStoreTypeNotInstantiable))) + .fn(t => { + t.expectCompileResult(false, kStoreTypeNotInstantiable[t.params.case]); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/util.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/util.js new file mode 100644 index 00000000000..6fee41f7002 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/util.js @@ -0,0 +1,132 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { kAccessModeInfo, kAddressSpaceInfo } from '../../types.js'; + +/** An enumerator of shader stages */ + +/** The list of all shader stages */ +export const kShaderStages = ['vertex', 'fragment', 'compute']; + +/** + * declareEntrypoint emits the WGSL to declare an entry point with the name, stage and body. + * The generated function will have an appropriate return type and return statement, so that @p body + * does not have to change between stage. + * @param arg - arg specifies the + * optional entry point function name, the shader stage, and the body of the + * function, excluding any automatically generated return statements. + * @returns the WGSL string for the entry point + */ +export function declareEntryPoint(arg) { + if (arg.name === undefined) { + arg.name = 'main'; + } + switch (arg.stage) { + case 'vertex': + return `@vertex +fn ${arg.name}() -> @builtin(position) vec4f { + ${arg.body} + return vec4f(); +}`; + case 'fragment': + return `@fragment +fn ${arg.name}() { + ${arg.body} +}`; + case 'compute': + return `@compute @workgroup_size(1) +fn ${arg.name}() { + ${arg.body} +}`; + } +} + +/** + * @returns a WGSL var declaration with given parameters for variable 'x' and + * store type i32. + */ +export function declareVarX(addressSpace, accessMode) { + const parts = []; + if (addressSpace && kAddressSpaceInfo[addressSpace].binding) parts.push('@group(0) @binding(0) '); + parts.push('var'); + + const template_parts = []; + if (addressSpace) template_parts.push(addressSpace); + if (accessMode) template_parts.push(accessMode); + if (template_parts.length > 0) parts.push(`<${template_parts.join(',')}>`); + + parts.push(' x: i32;'); + return parts.join(''); +} + +/** + * @returns a list of booleans indicating valid cases of specifying the address + * space. + */ +export function explicitSpaceExpander(p) { + const info = kAddressSpaceInfo[p.addressSpace]; + return info.spell === 'must' ? [true] : [true, false]; +} + +/** + * @returns a list of usable access modes under given experiment conditions, or undefined + * if none are allowed. + */ +export function accessModeExpander(p) { + const info = kAddressSpaceInfo[p.addressSpace]; + return p.explicitAccess && info.spellAccessMode !== 'never' ? info.accessModes : ['']; +} + +/** + * @returns a WGSL program with a single variable declaration, with the + * given parameterization + */ +export function getVarDeclShader( + p, + + additionalBody +) { + const info = kAddressSpaceInfo[p.addressSpace]; + const decl = declareVarX( + p.explicitSpace ? p.addressSpace : '', + p.explicitAccess ? p.accessMode : '' + ); + + additionalBody = additionalBody ?? ''; + + switch (info.scope) { + case 'module': + return decl + '\n' + declareEntryPoint({ stage: p.stage, body: additionalBody }); + + case 'function': + return declareEntryPoint({ stage: p.stage, body: decl + '\n' + additionalBody }); + } +} + +/** + * @returns the WGSL spelling of a pointer type corresponding to a variable + * declared with the given parameters. + */ +export function pointerType(p) { + const space = p.explicitSpace ? p.addressSpace : 'function'; + const modePart = p.accessMode ? ',' + p.accessMode : ''; + return `ptr<${space},${p.ptrStoreType}${modePart}>`; +} + +/** @returns the effective access mode for the given experiment. */ +export function effectiveAccessMode(info, accessMode) { + return accessMode || info.accessModes[0]; // default is first. +} + +/** @returns whether the setup allows reads */ +export function supportsRead(p) { + const info = kAddressSpaceInfo[p.addressSpace]; + const mode = effectiveAccessMode(info, p.accessMode); + return info.accessModes.includes(mode) && kAccessModeInfo[mode].read; +} + +/** @returns whether the setup allows writes */ +export function supportsWrite(p) { + const info = kAddressSpaceInfo[p.addressSpace]; + const mode = effectiveAccessMode(info, p.accessMode); + return info.accessModes.includes(mode) && kAccessModeInfo[mode].write; +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/var_access_mode.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/var_access_mode.spec.js new file mode 100644 index 00000000000..9ee10da3622 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/decl/var_access_mode.spec.js @@ -0,0 +1,114 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +7.3 var Declarations + +The access mode always has a default value, and except for variables in the +storage address space, must not be specified in the WGSL source. See §13.3 Address Spaces. +`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { kAccessModeInfo, kAddressSpaceInfo } from '../../types.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +import { + explicitSpaceExpander, + getVarDeclShader, + accessModeExpander, + supportsRead, + supportsWrite, +} from './util.js'; + +// Address spaces that can hold an i32 variable. +const kNonHandleAddressSpaces = keysOf(kAddressSpaceInfo).filter(as => as !== 'handle'); + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('explicit_access_mode') + .desc('Validate uses of an explicit access mode on a var declaration') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#var-decls') + .params( + u => + u + .combine('addressSpace', kNonHandleAddressSpaces) + .combine('explicitSpace', [true, false]) + // Only keep cases where: + // *if* the address space must be specified on a var decl (e.g. var) + // then the address space will actually be specified in this test case. + .filter(t => kAddressSpaceInfo[t.addressSpace].spell !== 'must' || t.explicitSpace) + .combine('explicitAccess', [true]) + .combine('accessMode', keysOf(kAccessModeInfo)) + .combine('stage', ['compute']) // Only need to check compute shaders + ) + .fn(t => { + const prog = getVarDeclShader(t.params); + const info = kAddressSpaceInfo[t.params.addressSpace]; + + const ok = + // The address space must be explicitly specified. + t.params.explicitSpace && + // The address space must allow an access mode to be spelled, and the + // access mode must be in the list of modes for the address space. + info.spellAccessMode !== 'never' && + info.accessModes.includes(t.params.accessMode); + + t.expectCompileResult(ok, prog); + }); + +g.test('implicit_access_mode') + .desc('Validate an implicit access mode on a var declaration') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#var-decls') + .params( + u => + u + .combine('addressSpace', kNonHandleAddressSpaces) + .expand('explicitSpace', explicitSpaceExpander) + .combine('explicitAccess', [false]) + .combine('accessMode', ['']) + .combine('stage', ['compute']) // Only need to check compute shaders + ) + .fn(t => { + const prog = getVarDeclShader(t.params); + + // 7.3 var Declarations + // "The access mode always has a default value,.." + const ok = true; + + t.expectCompileResult(ok, prog); + }); + +g.test('read_access') + .desc('A variable can be read from when the access mode permits') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#var-decls') + .params( + u => + u + .combine('addressSpace', kNonHandleAddressSpaces) + .expand('explicitSpace', explicitSpaceExpander) + .combine('explicitAccess', [false, true]) + .expand('accessMode', accessModeExpander) + .combine('stage', ['compute']) // Only need to check compute shaders + ) + .fn(t => { + const prog = getVarDeclShader(t.params, 'let copy = x;'); + const ok = supportsRead(t.params); + t.expectCompileResult(ok, prog); + }); + +g.test('write_access') + .desc('A variable can be written to when the access mode permits') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#var-decls') + .params( + u => + u + .combine('addressSpace', kNonHandleAddressSpaces) + .expand('explicitSpace', explicitSpaceExpander) + .combine('explicitAccess', [false, true]) + .expand('accessMode', accessModeExpander) + .combine('stage', ['compute']) // Only need to check compute shaders + ) + .fn(t => { + const prog = getVarDeclShader(t.params, 'x = 0;'); + const ok = supportsWrite(t.params); + t.expectCompileResult(ok, prog); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/access/vector.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/access/vector.spec.js new file mode 100644 index 00000000000..59961c89da5 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/access/vector.spec.js @@ -0,0 +1,224 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation tests for vector accesses +`; +import { makeTestGroup } from '../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kCases = { + // indexing with literal + literal_0: { wgsl: 'let r : T = v[0];', ok: true }, + literal_1: { wgsl: 'let r : T = v[1];', ok: true }, + literal_2: { wgsl: 'let r : T = v[2];', ok: width => width > 2 }, + literal_3: { wgsl: 'let r : T = v[3];', ok: width => width > 3 }, + literal_0i: { wgsl: 'let r : T = v[0i];', ok: true }, + literal_1i: { wgsl: 'let r : T = v[1i];', ok: true }, + literal_2i: { wgsl: 'let r : T = v[2i];', ok: width => width > 2 }, + literal_3i: { wgsl: 'let r : T = v[3i];', ok: width => width > 3 }, + literal_0u: { wgsl: 'let r : T = v[0u];', ok: true }, + literal_1u: { wgsl: 'let r : T = v[1u];', ok: true }, + literal_2u: { wgsl: 'let r : T = v[2u];', ok: width => width > 2 }, + literal_3u: { wgsl: 'let r : T = v[3u];', ok: width => width > 3 }, + + // indexing with 'const' variable + const_0: { wgsl: 'const i = 0; let r : T = v[i];', ok: true }, + const_1: { wgsl: 'const i = 1; let r : T = v[i];', ok: true }, + const_2: { wgsl: 'const i = 2; let r : T = v[i];', ok: width => width > 2 }, + const_3: { wgsl: 'const i = 3; let r : T = v[i];', ok: width => width > 3 }, + const_0i: { wgsl: 'const i = 0i; let r : T = v[i];', ok: true }, + const_1i: { wgsl: 'const i = 1i; let r : T = v[i];', ok: true }, + const_2i: { wgsl: 'const i = 2i; let r : T = v[i];', ok: width => width > 2 }, + const_3i: { wgsl: 'const i = 3i; let r : T = v[i];', ok: width => width > 3 }, + const_0u: { wgsl: 'const i = 0u; let r : T = v[i];', ok: true }, + const_1u: { wgsl: 'const i = 1u; let r : T = v[i];', ok: true }, + const_2u: { wgsl: 'const i = 2u; let r : T = v[i];', ok: width => width > 2 }, + const_3u: { wgsl: 'const i = 3u; let r : T = v[i];', ok: width => width > 3 }, + + // indexing with 'let' variable + let_0: { wgsl: 'let i = 0; let r : T = v[i];', ok: true }, + let_1: { wgsl: 'let i = 1; let r : T = v[i];', ok: true }, + let_2: { wgsl: 'let i = 2; let r : T = v[i];', ok: true }, + let_3: { wgsl: 'let i = 3; let r : T = v[i];', ok: true }, + let_0i: { wgsl: 'let i = 0i; let r : T = v[i];', ok: true }, + let_1i: { wgsl: 'let i = 1i; let r : T = v[i];', ok: true }, + let_2i: { wgsl: 'let i = 2i; let r : T = v[i];', ok: true }, + let_3i: { wgsl: 'let i = 3i; let r : T = v[i];', ok: true }, + let_0u: { wgsl: 'let i = 0u; let r : T = v[i];', ok: true }, + let_1u: { wgsl: 'let i = 1u; let r : T = v[i];', ok: true }, + let_2u: { wgsl: 'let i = 2u; let r : T = v[i];', ok: true }, + let_3u: { wgsl: 'let i = 3u; let r : T = v[i];', ok: true }, + + // indexing with 'var' variable + var_0: { wgsl: 'var i = 0; let r : T = v[i];', ok: true }, + var_1: { wgsl: 'var i = 1; let r : T = v[i];', ok: true }, + var_2: { wgsl: 'var i = 2; let r : T = v[i];', ok: true }, + var_3: { wgsl: 'var i = 3; let r : T = v[i];', ok: true }, + var_0i: { wgsl: 'var i = 0i; let r : T = v[i];', ok: true }, + var_1i: { wgsl: 'var i = 1i; let r : T = v[i];', ok: true }, + var_2i: { wgsl: 'var i = 2i; let r : T = v[i];', ok: true }, + var_3i: { wgsl: 'var i = 3i; let r : T = v[i];', ok: true }, + var_0u: { wgsl: 'var i = 0u; let r : T = v[i];', ok: true }, + var_1u: { wgsl: 'var i = 1u; let r : T = v[i];', ok: true }, + var_2u: { wgsl: 'var i = 2u; let r : T = v[i];', ok: true }, + var_3u: { wgsl: 'var i = 3u; let r : T = v[i];', ok: true }, + + // indexing with const expression + const_expr_0: { wgsl: 'let r : T = v[0 / 2];', ok: true }, + const_expr_1: { wgsl: 'let r : T = v[2 / 2];', ok: true }, + const_expr_2: { wgsl: 'let r : T = v[4 / 2];', ok: width => width > 2 }, + const_expr_3: { wgsl: 'let r : T = v[6 / 2];', ok: width => width > 3 }, + const_expr_2_via_trig: { + wgsl: 'let r : T = v[i32(tan(1.10714872) + 0.5)];', + ok: width => width > 2, + }, + const_expr_3_via_trig: { + wgsl: 'let r : T = v[u32(tan(1.24904577) + 0.5)];', + ok: width => width > 3, + }, + const_expr_2_via_vec2: { + wgsl: 'let r : T = v[vec2(3, 2)[1]];', + ok: width => width > 2, + }, + const_expr_3_via_vec2: { + wgsl: 'let r : T = v[vec2(3, 2).x];', + ok: width => width > 3, + }, + const_expr_2_via_vec2u: { + wgsl: 'let r : T = v[vec2u(3, 2)[1]];', + ok: width => width > 2, + }, + const_expr_3_via_vec2i: { + wgsl: 'let r : T = v[vec2i(3, 2).x];', + ok: width => width > 3, + }, + const_expr_2_via_array: { + wgsl: 'let r : T = v[array(3, 2)[1]];', + ok: width => width > 2, + }, + const_expr_3_via_array: { + wgsl: 'let r : T = v[array(3, 2)[0]];', + ok: width => width > 3, + }, + const_expr_2_via_struct: { + wgsl: 'let r : T = v[S(2).i];', + ok: width => width > 2, + }, + const_expr_3_via_struct: { + wgsl: 'let r : T = v[S(3).i];', + ok: width => width > 3, + }, + + // single element convenience name accesses + x: { wgsl: 'let r : T = v.x;', ok: true }, + y: { wgsl: 'let r : T = v.y;', ok: true }, + z: { wgsl: 'let r : T = v.z;', ok: width => width > 2 }, + w: { wgsl: 'let r : T = v.w;', ok: width => width > 3 }, + r: { wgsl: 'let r : T = v.r;', ok: true }, + g: { wgsl: 'let r : T = v.g;', ok: true }, + b: { wgsl: 'let r : T = v.b;', ok: width => width > 2 }, + a: { wgsl: 'let r : T = v.a;', ok: width => width > 3 }, + + // swizzles + xy: { wgsl: 'let r : vec2 = v.xy;', ok: true }, + yx: { wgsl: 'let r : vec2 = v.yx;', ok: true }, + xyx: { wgsl: 'let r : vec3 = v.xyx;', ok: true }, + xyz: { wgsl: 'let r : vec3 = v.xyz;', ok: width => width > 2 }, + zyx: { wgsl: 'let r : vec3 = v.zyx;', ok: width => width > 2 }, + xyxy: { wgsl: 'let r : vec4 = v.xyxy;', ok: true }, + xyxz: { wgsl: 'let r : vec4 = v.xyxz;', ok: width => width > 2 }, + xyzw: { wgsl: 'let r : vec4 = v.xyzw;', ok: width => width > 3 }, + yxwz: { wgsl: 'let r : vec4 = v.yxwz;', ok: width => width > 3 }, + rg: { wgsl: 'let r : vec2 = v.rg;', ok: true }, + gr: { wgsl: 'let r : vec2 = v.gr;', ok: true }, + rgg: { wgsl: 'let r : vec3 = v.rgg;', ok: true }, + rgb: { wgsl: 'let r : vec3 = v.rgb;', ok: width => width > 2 }, + grb: { wgsl: 'let r : vec3 = v.grb;', ok: width => width > 2 }, + rgbr: { wgsl: 'let r : vec4 = v.rgbr;', ok: width => width > 2 }, + rgba: { wgsl: 'let r : vec4 = v.rgba;', ok: width => width > 3 }, + gbra: { wgsl: 'let r : vec4 = v.gbra;', ok: width => width > 3 }, + + // swizzle chains + xy_yx: { wgsl: 'let r : vec2 = v.xy.yx;', ok: true }, + xyx_xxy: { wgsl: 'let r : vec3 = v.xyx.xxy;', ok: true }, + xyz_zyx: { wgsl: 'let r : vec3 = v.xyz.zyx;', ok: width => width > 2 }, + xyxy_rrgg: { wgsl: 'let r : vec4 = v.xyxy.rrgg;', ok: true }, + rbrg_xyzw: { wgsl: 'let r : vec4 = v.rbrg.xyzw;', ok: width => width > 2 }, + xyxz_rbg_yx: { wgsl: 'let r : vec2 = v.xyxz.rbg.yx;', ok: width => width > 2 }, + wxyz_bga_xy: { wgsl: 'let r : vec2 = v.wxyz.bga.xy;', ok: width => width > 3 }, + + // error: invalid convenience letterings + xq: { wgsl: 'let r : vec2 = v.xq;', ok: false }, + py: { wgsl: 'let r : vec2 = v.py;', ok: false }, + + // error: mixed convenience letterings + xg: { wgsl: 'let r : vec2 = v.xg;', ok: false }, + ryb: { wgsl: 'let r : vec3 = v.ryb;', ok: false }, + xgza: { wgsl: 'let r : vec4 = v.xgza;', ok: false }, + + // error: too many swizzle elements + xxxxx: { wgsl: 'let r = v.xxxxx;', ok: false }, + rrrrr: { wgsl: 'let r = v.rrrrr;', ok: false }, + yxwxy: { wgsl: 'let r = v.yxwxy;', ok: false }, + rgbar: { wgsl: 'let r = v.rgbar;', ok: false }, + + // error: invalid index value + literal_5: { wgsl: 'let r : T = v[5];', ok: false }, + literal_minus_1: { wgsl: 'let r : T = v[-1];', ok: false }, + + // error: invalid index type + float_idx: { wgsl: 'let r : T = v[1.0];', ok: false }, + bool_idx: { wgsl: 'let r : T = v[true];', ok: false }, + array_idx: { wgsl: 'let r : T = v[array()];', ok: false }, +}; + +g.test('vector') + .desc('Tests validation of vector indexed and swizzles') + .params(u => + u + .combine('case', keysOf(kCases)) // + .combine('vector_decl', ['const', 'let', 'var', 'param']) + .combine('vector_width', [2, 3, 4]) + .combine('element_type', ['i32', 'u32', 'f32', 'f16', 'bool']) + ) + .beforeAllSubcases(t => { + if (t.params.element_type === 'f16') { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const c = kCases[t.params.case]; + const enables = t.params.element_type === 'f16' ? 'enable f16;' : ''; + const prefix = `${enables} + +alias T = ${t.params.element_type}; + +struct S { + i : i32, +} + +@compute @workgroup_size(1) +`; + const code = + t.params.vector_decl === 'param' + ? `${prefix} +fn main() { + F(vec${t.params.vector_width}()); +} + +fn F(v : vec${t.params.vector_width}) { + ${c.wgsl} +} +` + : `${prefix} +fn main() { + ${t.params.vector_decl} v = vec${t.params.vector_width}(); + ${c.wgsl} +} +`; + const pass = typeof c.ok === 'function' ? c.ok(t.params.vector_width) : c.ok; + t.expectCompileResult(pass, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/abs.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/abs.spec.js new file mode 100644 index 00000000000..0c0ade4df7d --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/abs.spec.js @@ -0,0 +1,55 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'abs'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + elementType, + kAllFloatAndIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatAndIntegerScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() never errors +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // abs() should never error + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acos.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acos.spec.js new file mode 100644 index 00000000000..788b32cb84f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acos.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'acos'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinusTwoToTwo, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinusTwoToTwo, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = Math.abs(t.params.value) <= 1; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acosh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acosh.spec.js new file mode 100644 index 00000000000..b3cb566eec9 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/acosh.spec.js @@ -0,0 +1,81 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'acosh'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinusTwoToTwo, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(fullRangeForType(kValuesTypes[u.type]), kMinusTwoToTwo)) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable(Math.acosh(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asin.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asin.spec.js new file mode 100644 index 00000000000..5221aff37a2 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asin.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'asin'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinusTwoToTwo, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinusTwoToTwo, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = Math.abs(t.params.value) <= 1; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asinh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asinh.spec.js new file mode 100644 index 00000000000..6b4af70cb35 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/asinh.spec.js @@ -0,0 +1,83 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'asinh'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { linearRange } from '../../../../../util/math.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => + unique(fullRangeForType(kValuesTypes[u.type]), linearRange(-2000, 2000, 10)) + ) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable(Math.asinh(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan.spec.js new file mode 100644 index 00000000000..e4d280a437e --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan.spec.js @@ -0,0 +1,82 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'atan'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { fpTraitsFor } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinus3PiTo3Pi, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinus3PiTo3Pi, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const smallestPositive = fpTraitsFor(elementType(type)).constants().positive.min; + const expectedResult = Math.abs(Math.cos(t.params.value)) > smallestPositive; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan2.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan2.spec.js new file mode 100644 index 00000000000..f7048707cbd --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atan2.spec.js @@ -0,0 +1,108 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'atan2'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + Vector, + VectorType, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinus3PiTo3Pi, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('y', u => unique(kMinus3PiTo3Pi, fullRangeForType(kValuesTypes[u.type], 4))) + .expand('x', u => unique(kMinus3PiTo3Pi, fullRangeForType(kValuesTypes[u.type], 4))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable( + Math.abs(Math.atan2(t.params.y, t.params.x)), + elementType(type) + ); + + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.y), type.create(t.params.x)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument_y') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const yTy = kIntegerArgumentTypes[t.params.type]; + const xTy = yTy instanceof Vector ? new VectorType(yTy.size, TypeF32) : TypeF32; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ yTy === TypeF32, + [yTy.create(1), xTy.create(1)], + 'constant' + ); + }); + +g.test('integer_argument_x') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const xTy = kIntegerArgumentTypes[t.params.type]; + const yTy = xTy instanceof Vector ? new VectorType(xTy.size, TypeF32) : TypeF32; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ xTy === TypeF32, + [yTy.create(1), xTy.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atanh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atanh.spec.js new file mode 100644 index 00000000000..10ec7a6d093 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/atanh.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'atanh'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinusTwoToTwo, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinusTwoToTwo, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = Math.abs(t.params.value) < 1; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/bitcast.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/bitcast.spec.js new file mode 100644 index 00000000000..06281d06e77 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/bitcast.spec.js @@ -0,0 +1,286 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation negative tests for bitcast builtins. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../../../common/util/data_tables.js'; +import { kBit } from '../../../../../util/constants.js'; +import { linearRange } from '../../../../../util/math.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +// A VectorCase specifies the number of components a vector type has, +// and which component will have a bad value. +// Use width = 1 to indicate a scalar. + +const kVectorCases = { + v1_b0: { width: 1, badIndex: 0 }, + v2_b0: { width: 2, badIndex: 0 }, + v2_b1: { width: 2, badIndex: 1 }, + v3_b0: { width: 3, badIndex: 0 }, + v3_b1: { width: 3, badIndex: 1 }, + v3_b2: { width: 3, badIndex: 2 }, + v4_b0: { width: 4, badIndex: 0 }, + v4_b1: { width: 4, badIndex: 1 }, + v4_b2: { width: 4, badIndex: 2 }, + v4_b3: { width: 4, badIndex: 3 }, +}; + +const numNaNs = 4; +const f32InfAndNaNInU32 = [ + // Cover NaNs evenly in integer space. + // The positive NaN with the lowest integer representation is the integer + // for infinity, plus one. + // The positive NaN with the highest integer representation is i32.max (!) + ...linearRange(kBit.f32.positive.infinity + 1, kBit.i32.positive.max, numNaNs), + // The negative NaN with the lowest integer representation is the integer + // for negative infinity, plus one. + // The negative NaN with the highest integer representation is u32.max (!) + ...linearRange(kBit.f32.negative.infinity + 1, kBit.u32.max, numNaNs), + kBit.f32.positive.infinity, + kBit.f32.negative.infinity, +]; + +g.test('bad_const_to_f32') + .specURL('https://www.w3.org/TR/WGSL/#floating-point-evaluation') + .desc( + ` +It is a shader-creation error if any const-expression of floating-point type evaluates to NaN or infinity. +` + ) + .params(u => + u + .combine('fromScalarType', ['i32', 'u32']) + .combine('vectorize', keysOf(kVectorCases)) + .beginSubcases() + .combine('bitBadValue', [...f32InfAndNaNInU32]) + ) + .fn(t => { + // For scalar cases, generate code like: + // const f = bitcast(i32(u32(0x7f800000))); + // For vector cases, generate code where one component is bad. In this case + // width=4 and badIndex=2 + // const f = bitcast(vec4<32>(0,0,i32(u32(0x7f800000)),0)); + const vectorize = kVectorCases[t.params.vectorize]; + const width = vectorize.width; + const badIndex = vectorize.badIndex; + const badScalar = `${t.params.fromScalarType}(u32(${t.params.bitBadValue}))`; + const destType = width === 1 ? 'f32' : `vec${width}f`; + const srcType = + width === 1 ? t.params.fromScalarType : `vec${width}<${t.params.fromScalarType}>`; + const components = [...Array(width).keys()] + .map(i => (i === badIndex ? badScalar : '0')) + .join(','); + const code = `const f = bitcast<${destType}>(${srcType}(${components}));`; + t.expectCompileResult(false, code); + }); + +const f32_matrix_types = [2, 3, 4] + .map(i => [2, 3, 4].map(j => `mat${i}x${j}f`)) + .reduce((a, c) => a.concat(c), []); +const bool_types = ['bool', ...[2, 3, 4].map(i => `vec${i}`)]; + +g.test('bad_type_constructible') + .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') + .desc( + ` +Bitcast only applies to concrete numeric scalar or concrete numeric vector. +Test constructible types. +` + ) + .params(u => + u + .combine('type', [...f32_matrix_types, ...bool_types, 'array', 'S']) + .combine('direction', ['to', 'from']) + ) + .fn(t => { + const T = t.params.type; + const preamble = T === 'S' ? 'struct S { a:i32 } ' : ''; + // Create a value of type T using zero-construction: T(). + const srcVal = t.params.direction === 'to' ? '0' : `${T}()`; + const destType = t.params.direction === 'to' ? T : 'i32'; + const code = preamble + `const x = bitcast<${destType}>(${srcVal});`; + t.expectCompileResult(false, code); + }); + +g.test('bad_type_nonconstructible') + .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') + .desc( + ` +Bitcast only applies to concrete numeric scalar or concrete numeric vector. +Test non-constructible types. +` + ) + .params(u => u.combine('var', ['s', 't', 'b', 'p']).combine('direction', ['to', 'from'])) + .fn(t => { + const typeOf = { + s: 'sampler', + t: 'texture_depth_2d', + b: 'array', + p: 'ptr', + }; + const srcVal = t.params.direction === 'to' ? '0' : t.params.var; + const destType = t.params.direction === 'to' ? typeOf[t.params.var] : 'i32'; + const code = ` + @group(0) @binding(0) var s: sampler; + @group(0) @binding(1) var t: texture_depth_2d; + @group(0) @binding(2) var b: array; + var v: i32; + @compute @workgroup_size(1) + fn main() { + let p = &v; + let x = bitcast<${destType}>(${srcVal}); + } + `; + t.expectCompileResult(false, code); + }); + +g.test('bad_to_vec3h') + .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') + .desc( + ` +Can't cast numeric type to vec3 because it is 48 bits wide +and no other type is that size. +` + ) + .params(u => + u + .combine('other_type', [ + 'bool', + 'u32', + 'i32', + 'f32', + 'vec2', + 'vec3', + 'vec4', + 'vec2u', + 'vec3u', + 'vec4u', + 'vec2i', + 'vec3i', + 'vec4i', + 'vec2f', + 'vec3f', + 'vec4f', + 'vec2h', + 'vec4h', + ]) + .combine('direction', ['to', 'from']) + .combine('type', ['vec3', 'vec3h']) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const src_type = t.params.direction === 'to' ? t.params.type : t.params.other_type; + const dst_type = t.params.direction === 'from' ? t.params.type : t.params.other_type; + const code = ` +enable f16; +@fragment +fn main() { + var src : ${src_type}; + let dst = bitcast<${dst_type}>(src); +}`; + t.expectCompileResult(false, code); + }); + +g.test('bad_to_f16') + .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') + .desc( + ` +Can't cast non-16-bit types to f16 because it is 16 bits wide +and no other type is that size. +` + ) + .params(u => + u + .combine('other_type', [ + 'bool', + 'u32', + 'i32', + 'f32', + 'vec2', + 'vec3', + 'vec4', + 'vec2u', + 'vec3u', + 'vec4u', + 'vec2i', + 'vec3i', + 'vec4i', + 'vec2f', + 'vec3f', + 'vec4f', + 'vec2h', + 'vec3h', + 'vec4h', + ]) + .combine('direction', ['to', 'from']) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const src_type = t.params.direction === 'to' ? 'f16' : t.params.other_type; + const dst_type = t.params.direction === 'from' ? 'f16' : t.params.other_type; + const code = ` +enable f16; +@fragment +fn main() { + var src : ${src_type}; + let dst = bitcast<${dst_type}>(src); +}`; + t.expectCompileResult(false, code); + }); + +g.test('valid_vec2h') + .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') + .desc(`Check valid vec2 bitcasts`) + .params(u => + u + .combine('other_type', ['u32', 'i32', 'f32']) + .combine('type', ['vec2', 'vec2h']) + .combine('direction', ['to', 'from']) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const src_type = t.params.direction === 'to' ? t.params.type : t.params.other_type; + const dst_type = t.params.direction === 'from' ? t.params.type : t.params.other_type; + const code = ` +enable f16; +@fragment +fn main() { + var src : ${src_type}; + let dst = bitcast<${dst_type}>(src); +}`; + t.expectCompileResult(true, code); + }); + +g.test('valid_vec4h') + .specURL('https://www.w3.org/TR/WGSL/#bitcast-builtin') + .desc(`Check valid vec2 bitcasts`) + .params(u => + u + .combine('other_type', ['vec2', 'vec2u', 'vec2', 'vec2i', 'vec2', 'vec2f']) + .combine('type', ['vec4', 'vec4h']) + .combine('direction', ['to', 'from']) + ) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const src_type = t.params.direction === 'to' ? t.params.type : t.params.other_type; + const dst_type = t.params.direction === 'from' ? t.params.type : t.params.other_type; + const code = ` +enable f16; +@fragment +fn main() { + var src : ${src_type}; + let dst = bitcast<${dst_type}>(src); +}`; + t.expectCompileResult(true, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/ceil.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/ceil.spec.js new file mode 100644 index 00000000000..80dd07d236f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/ceil.spec.js @@ -0,0 +1,76 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'ceil'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() never errors +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // ceil() should never error + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/clamp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/clamp.spec.js new file mode 100644 index 00000000000..406793612c3 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/clamp.spec.js @@ -0,0 +1,58 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'clamp'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + elementType, + kAllFloatAndIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatAndIntegerScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('e', u => fullRangeForType(kValuesTypes[u.type], 3)) + .expand('low', u => fullRangeForType(kValuesTypes[u.type], 4)) + .expand('high', u => fullRangeForType(kValuesTypes[u.type], 4)) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = t.params.low <= t.params.high; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.e), type.create(t.params.low), type.create(t.params.high)], + t.params.stage + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/const_override_validation.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/const_override_validation.js new file mode 100644 index 00000000000..273659a8a7c --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/const_override_validation.js @@ -0,0 +1,177 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { assert, unreachable } from '../../../../../../common/util/util.js'; +import { kValue } from '../../../../../util/constants.js'; +import { + TypeF16, + elementType, + elementsOf, + isAbstractType, +} from '../../../../../util/conversion.js'; +import { fullF16Range, fullF32Range, fullF64Range, linearRange } from '../../../../../util/math.js'; + +/// A linear sweep between -2 to 2 +export const kMinusTwoToTwo = linearRange(-2, 2, 10); + +/// An array of values ranging from -3π to 3π, with a focus on multiples of π +export const kMinus3PiTo3Pi = [ + -3 * Math.PI, + -2.999 * Math.PI, + + -2.501 * Math.PI, + -2.5 * Math.PI, + -2.499 * Math.PI, + + -2.001 * Math.PI, + -2.0 * Math.PI, + -1.999 * Math.PI, + + -1.501 * Math.PI, + -1.5 * Math.PI, + -1.499 * Math.PI, + + -1.001 * Math.PI, + -1.0 * Math.PI, + -0.999 * Math.PI, + + -0.501 * Math.PI, + -0.5 * Math.PI, + -0.499 * Math.PI, + + -0.001, + 0, + 0.001, + + 0.499 * Math.PI, + 0.5 * Math.PI, + 0.501 * Math.PI, + + 0.999 * Math.PI, + 1.0 * Math.PI, + 1.001 * Math.PI, + + 1.499 * Math.PI, + 1.5 * Math.PI, + 1.501 * Math.PI, + + 1.999 * Math.PI, + 2.0 * Math.PI, + 2.001 * Math.PI, + + 2.499 * Math.PI, + 2.5 * Math.PI, + 2.501 * Math.PI, + + 2.999 * Math.PI, + 3 * Math.PI, +]; + +/// The evaluation stages to test +export const kConstantAndOverrideStages = ['constant', 'override']; + +/** + * @returns true if evaluation stage @p stage supports expressions of type @p. + */ +export function stageSupportsType(stage, type) { + if (stage === 'override' && isAbstractType(elementType(type))) { + // Abstract numerics are concretized before being used in an override expression. + return false; + } + return true; +} + +/** + * Runs a validation test to check that evaluation of @p builtin either evaluates with or without + * error at shader creation time or pipeline creation time. + * @param t the ShaderValidationTest + * @param builtin the name of the builtin + * @param expectedResult false if an error is expected, true if no error is expected + * @param args the arguments to pass to the builtin + * @param stage the evaluation stage + */ +export function validateConstOrOverrideBuiltinEval(t, builtin, expectedResult, args, stage) { + const elTys = args.map(arg => elementType(arg.type)); + const enables = elTys.some(ty => ty === TypeF16) ? 'enable f16;' : ''; + + switch (stage) { + case 'constant': { + t.expectCompileResult( + expectedResult, + `${enables} +const v = ${builtin}(${args.map(arg => arg.wgsl()).join(', ')});` + ); + + break; + } + case 'override': { + assert(!elTys.some(ty => isAbstractType(ty))); + const constants = {}; + const overrideDecls = []; + const callArgs = []; + let numOverrides = 0; + for (const arg of args) { + const argOverrides = []; + for (const el of elementsOf(arg)) { + const name = `o${numOverrides++}`; + overrideDecls.push(`override ${name} : ${el.type};`); + argOverrides.push(name); + constants[name] = Number(el.value); + } + callArgs.push(`${arg.type}(${argOverrides.join(', ')})`); + } + t.expectPipelineResult({ + expectedResult, + code: `${enables} +${overrideDecls.join('\n')} +var v = ${builtin}(${callArgs.join(', ')});`, + constants, + reference: ['v'], + }); + break; + } + } +} + +/** @returns a sweep of the representable values for element type of @p type */ +export function fullRangeForType(type, count) { + if (count === undefined) { + count = 25; + } + switch (elementType(type)?.kind) { + case 'abstract-float': + return fullF64Range({ + pos_sub: Math.ceil((count * 1) / 5), + pos_norm: Math.ceil((count * 4) / 5), + }); + case 'f32': + return fullF32Range({ + pos_sub: Math.ceil((count * 1) / 5), + pos_norm: Math.ceil((count * 4) / 5), + }); + case 'f16': + return fullF16Range({ + pos_sub: Math.ceil((count * 1) / 5), + pos_norm: Math.ceil((count * 4) / 5), + }); + case 'i32': + return linearRange(kValue.i32.negative.min, kValue.i32.positive.max, count).map(f => + Math.floor(f) + ); + + case 'u32': + return linearRange(0, kValue.u32.max, count).map(f => Math.floor(f)); + } + + unreachable(); +} + +/** @returns all the values in the provided arrays with duplicates removed */ +export function unique(...arrays) { + const set = new Set(); + for (const arr of arrays) { + for (const item of arr) { + set.add(item); + } + } + return [...set]; +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cos.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cos.spec.js new file mode 100644 index 00000000000..df6fee7feb5 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cos.spec.js @@ -0,0 +1,78 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'cos'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinus3PiTo3Pi, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinus3PiTo3Pi, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ true, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cosh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cosh.spec.js new file mode 100644 index 00000000000..e4f5705f743 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/cosh.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'cosh'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable(Math.cosh(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/degrees.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/degrees.spec.js new file mode 100644 index 00000000000..c42518c4d49 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/degrees.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'degrees'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable((t.params.value * 180) / Math.PI, elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp.spec.js new file mode 100644 index 00000000000..579f9349cc3 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp.spec.js @@ -0,0 +1,103 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'exp'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { kValue } from '../../../../../util/constants.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .combine('value', [ + -1e2, + -1e3, + -4, + -3, + -2, + -1, + -1e-1, + -1e-2, + -1e-3, + 0, + 1e-3, + 1e-2, + 1e-1, + 1, + 2, + 3, + 4, + 1e2, + 1e3, + Math.log2(kValue.f16.positive.max) - 0.1, + Math.log2(kValue.f16.positive.max) + 0.1, + Math.log2(kValue.f32.positive.max) - 0.1, + Math.log2(kValue.f32.positive.max) + 0.1, + ]) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable(Math.exp(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp2.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp2.spec.js new file mode 100644 index 00000000000..91cee438b1e --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/exp2.spec.js @@ -0,0 +1,103 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'exp2'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { kValue } from '../../../../../util/constants.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .combine('value', [ + -1e2, + -1e3, + -4, + -3, + -2, + -1, + -1e-1, + -1e-2, + -1e-3, + 0, + 1e-3, + 1e-2, + 1e-1, + 1, + 2, + 3, + 4, + 1e2, + 1e3, + Math.log2(kValue.f16.positive.max) - 0.1, + Math.log2(kValue.f16.positive.max) + 0.1, + Math.log2(kValue.f32.positive.max) - 0.1, + Math.log2(kValue.f32.positive.max) + 0.1, + ]) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable(Math.pow(2, t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/inverseSqrt.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/inverseSqrt.spec.js new file mode 100644 index 00000000000..f111baeb58d --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/inverseSqrt.spec.js @@ -0,0 +1,82 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'inverseSqrt'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinusTwoToTwo, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinusTwoToTwo, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = + t.params.value > 0 && isRepresentable(1 / Math.sqrt(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/length.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/length.spec.js new file mode 100644 index 00000000000..97b0ba8f31b --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/length.spec.js @@ -0,0 +1,205 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'length'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalars, + kAllFloatVector2, + kAllFloatVector3, + kAllFloatVector4, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +/** + * Evaluates the result and information about a call to length(), with a vector + * formed from @p vec of the element type @p type. + */ +function calculate(vec, type) { + const squareSum = vec.reduce((prev, curr) => prev + curr * curr, 0); + const result = Math.sqrt(squareSum); + return { + isIntermediateRepresentable: isRepresentable(squareSum, type), + isResultRepresentable: isRepresentable(result, type), + result, + }; +} + +const kScalarTypes = objectsToRecord(kAllFloatScalars); + +g.test('scalar') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() with +the input scalar value always compiles without error +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kScalarTypes)) + .filter(u => stageSupportsType(u.stage, kScalarTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kScalarTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kScalarTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + // We only validate with numbers known to be representable by the type + const expectedResult = true; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kScalarTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kVec2Types = objectsToRecord(kAllFloatVector2); + +g.test('vec2') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() with a vec2 compiles with valid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kVec2Types)) + .filter(u => stageSupportsType(u.stage, kVec2Types[u.type])) + .beginSubcases() + .expand('x', u => fullRangeForType(kVec2Types[u.type], 5)) + .expand('y', u => fullRangeForType(kVec2Types[u.type], 5)) + .expand('_result', u => [calculate([u.x, u.y], elementType(kVec2Types[u.type]))]) + .filter(u => u._result.isResultRepresentable === u._result.isIntermediateRepresentable) + ) + .beforeAllSubcases(t => { + if (elementType(kVec2Types[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = t.params._result.isResultRepresentable; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kVec2Types[t.params.type].create([t.params.x, t.params.y])], + t.params.stage + ); + }); + +const kVec3Types = objectsToRecord(kAllFloatVector3); + +g.test('vec3') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() with a vec3 compiles with valid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kVec3Types)) + .filter(u => stageSupportsType(u.stage, kVec3Types[u.type])) + .beginSubcases() + .expand('x', u => fullRangeForType(kVec3Types[u.type], 4)) + .expand('y', u => fullRangeForType(kVec3Types[u.type], 4)) + .expand('z', u => fullRangeForType(kVec3Types[u.type], 4)) + .expand('_result', u => [calculate([u.x, u.y, u.z], elementType(kVec3Types[u.type]))]) + .filter(u => u._result.isResultRepresentable === u._result.isIntermediateRepresentable) + ) + .beforeAllSubcases(t => { + if (elementType(kVec3Types[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = t.params._result.isResultRepresentable; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kVec3Types[t.params.type].create([t.params.x, t.params.y, t.params.z])], + t.params.stage + ); + }); + +const kVec4Types = objectsToRecord(kAllFloatVector4); + +g.test('vec4') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() with a vec4 compiles with valid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kVec4Types)) + .filter(u => stageSupportsType(u.stage, kVec4Types[u.type])) + .beginSubcases() + .expand('x', u => fullRangeForType(kVec4Types[u.type], 3)) + .expand('y', u => fullRangeForType(kVec4Types[u.type], 3)) + .expand('z', u => fullRangeForType(kVec4Types[u.type], 3)) + .expand('w', u => fullRangeForType(kVec4Types[u.type], 3)) + .expand('_result', u => [calculate([u.x, u.y, u.z, u.w], elementType(kVec4Types[u.type]))]) + .filter(u => u._result.isResultRepresentable === u._result.isIntermediateRepresentable) + ) + .beforeAllSubcases(t => { + if (elementType(kVec4Types[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = t.params._result.isResultRepresentable; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kVec4Types[t.params.type].create([t.params.x, t.params.y, t.params.z, t.params.w])], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log.spec.js new file mode 100644 index 00000000000..bc9bc15dc60 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log.spec.js @@ -0,0 +1,77 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'log'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = t.params.value > 0; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log2.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log2.spec.js new file mode 100644 index 00000000000..be3e8768e18 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/log2.spec.js @@ -0,0 +1,77 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'log2'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = t.params.value > 0; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/modf.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/modf.spec.js new file mode 100644 index 00000000000..908ef7a3e41 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/modf.spec.js @@ -0,0 +1,77 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'modf'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // Result should always be representable by the type + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/radians.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/radians.spec.js new file mode 100644 index 00000000000..1564ae7a581 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/radians.spec.js @@ -0,0 +1,77 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'radians'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // The result is always smaller than the input, so can't go OOB. + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/round.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/round.spec.js new file mode 100644 index 00000000000..100439a242f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/round.spec.js @@ -0,0 +1,85 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'round'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { fpTraitsFor } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => { + const constants = fpTraitsFor(elementType(kValuesTypes[u.type])).constants(); + return unique(fullRangeForType(kValuesTypes[u.type]), [ + constants.negative.min + 0.1, + constants.positive.max - 0.1, + ]); + }) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // Result should always be representable by the type + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/saturate.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/saturate.spec.js new file mode 100644 index 00000000000..d67ccaed853 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/saturate.spec.js @@ -0,0 +1,77 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'saturate'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // Result should always be representable by the type + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sign.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sign.spec.js new file mode 100644 index 00000000000..7a4cb16419e --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sign.spec.js @@ -0,0 +1,80 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'sign'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatAndSignedIntegerScalarsAndVectors, + kAllUnsignedIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatAndSignedIntegerScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const expectedResult = true; // Result should always be representable by the type + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kUnsignedIntegerArgumentTypes = objectsToRecord([ + TypeF32, + ...kAllUnsignedIntegerScalarsAndVectors, +]); + +g.test('unsigned_integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kUnsignedIntegerArgumentTypes))) + .fn(t => { + const type = kUnsignedIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sin.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sin.spec.js new file mode 100644 index 00000000000..c05c8665688 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sin.spec.js @@ -0,0 +1,78 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'sin'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinus3PiTo3Pi, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinus3PiTo3Pi, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ true, + [kValuesTypes[t.params.type].create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sinh.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sinh.spec.js new file mode 100644 index 00000000000..388afbddc57 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sinh.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'sinh'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + stageSupportsType, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => fullRangeForType(kValuesTypes[u.type])) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = isRepresentable(Math.sinh(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sqrt.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sqrt.spec.js new file mode 100644 index 00000000000..a2c63e12279 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/sqrt.spec.js @@ -0,0 +1,82 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'sqrt'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { isRepresentable } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinusTwoToTwo, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() inputs rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinusTwoToTwo, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const expectedResult = + t.params.value >= 0 && isRepresentable(Math.sqrt(t.params.value), elementType(type)); + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(1)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/tan.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/tan.spec.js new file mode 100644 index 00000000000..80bbe17cbe5 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/expression/call/builtin/tan.spec.js @@ -0,0 +1,82 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ const builtin = 'tan'; +export const description = ` +Validation tests for the ${builtin}() builtin. +`; +import { makeTestGroup } from '../../../../../../common/framework/test_group.js'; +import { keysOf, objectsToRecord } from '../../../../../../common/util/data_tables.js'; +import { + TypeF16, + TypeF32, + elementType, + kAllFloatScalarsAndVectors, + kAllIntegerScalarsAndVectors, +} from '../../../../../util/conversion.js'; +import { fpTraitsFor } from '../../../../../util/floating_point.js'; +import { ShaderValidationTest } from '../../../shader_validation_test.js'; + +import { + fullRangeForType, + kConstantAndOverrideStages, + kMinus3PiTo3Pi, + stageSupportsType, + unique, + validateConstOrOverrideBuiltinEval, +} from './const_override_validation.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kValuesTypes = objectsToRecord(kAllFloatScalarsAndVectors); + +g.test('values') + .desc( + ` +Validates that constant evaluation and override evaluation of ${builtin}() rejects invalid values +` + ) + .params(u => + u + .combine('stage', kConstantAndOverrideStages) + .combine('type', keysOf(kValuesTypes)) + .filter(u => stageSupportsType(u.stage, kValuesTypes[u.type])) + .beginSubcases() + .expand('value', u => unique(kMinus3PiTo3Pi, fullRangeForType(kValuesTypes[u.type]))) + ) + .beforeAllSubcases(t => { + if (elementType(kValuesTypes[t.params.type]) === TypeF16) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const type = kValuesTypes[t.params.type]; + const smallestPositive = fpTraitsFor(elementType(type)).constants().positive.min; + const expectedResult = Math.abs(Math.cos(t.params.value)) > smallestPositive; + validateConstOrOverrideBuiltinEval( + t, + builtin, + expectedResult, + [type.create(t.params.value)], + t.params.stage + ); + }); + +const kIntegerArgumentTypes = objectsToRecord([TypeF32, ...kAllIntegerScalarsAndVectors]); + +g.test('integer_argument') + .desc( + ` +Validates that scalar and vector integer arguments are rejected by ${builtin}() +` + ) + .params(u => u.combine('type', keysOf(kIntegerArgumentTypes))) + .fn(t => { + const type = kIntegerArgumentTypes[t.params.type]; + validateConstOrOverrideBuiltinEval( + t, + builtin, + /* expectedResult */ type === TypeF32, + [type.create(0)], + 'constant' + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/alias_analysis.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/alias_analysis.spec.js new file mode 100644 index 00000000000..45af2c7dfd5 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/alias_analysis.spec.js @@ -0,0 +1,196 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for function alias analysis`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kUses = { + no_access: { is_write: false, gen: ref => `{ let p = &*&${ref}; }` }, + assign: { is_write: true, gen: ref => `${ref} = 42;` }, + compound_assign_lhs: { is_write: true, gen: ref => `${ref} += 1;` }, + compound_assign_rhs: { is_write: false, gen: ref => `{ var tmp : i32; tmp += ${ref}; }` }, + increment: { is_write: true, gen: ref => `${ref}++;` }, + binary_lhs: { is_write: false, gen: ref => `_ = ${ref} + 1;` }, + binary_rhs: { is_write: false, gen: ref => `_ = 1 + ${ref};` }, + unary_minus: { is_write: false, gen: ref => `_ = -${ref};` }, + bitcast: { is_write: false, gen: ref => `_ = bitcast(${ref});` }, + convert: { is_write: false, gen: ref => `_ = f32(${ref});` }, + builtin_arg: { is_write: false, gen: ref => `_ = abs(${ref});` }, + index_access: { is_write: false, gen: ref => `{ var arr : array; _ = arr[${ref}]; }` }, + let_init: { is_write: false, gen: ref => `{ let tmp = ${ref}; }` }, + var_init: { is_write: false, gen: ref => `{ var tmp = ${ref}; }` }, + return: { is_write: false, gen: ref => `{ return ${ref}; }` }, + switch_cond: { is_write: false, gen: ref => `switch(${ref}) { default { break; } }` }, +}; + +function shouldPass(aliased, ...uses) { + // Expect fail if the pointers are aliased and at least one of the accesses is a write. + // If either of the accesses is a "no access" then expect pass. + return !aliased || !uses.some(u => kUses[u].is_write) || uses.includes('no_access'); +} + +g.test('two_pointers') + .desc(`Test aliasing of two pointers passed to a function.`) + .params(u => + u + .combine('address_space', ['private', 'function']) + .combine('a_use', keysOf(kUses)) + .combine('b_use', keysOf(kUses)) + .combine('aliased', [true, false]) + .beginSubcases() + ) + .fn(t => { + const code = ` +${t.params.address_space === 'private' ? `var x : i32; var y : i32;` : ``} + +fn callee(pa : ptr<${t.params.address_space}, i32>, + pb : ptr<${t.params.address_space}, i32>) -> i32 { + ${kUses[t.params.a_use].gen(`*pa`)} + ${kUses[t.params.b_use].gen(`*pb`)} + return 0; +} + +fn caller() { + ${t.params.address_space === 'function' ? `var x : i32; var y : i32;` : ``} + callee(&x, ${t.params.aliased ? `&x` : `&y`}); +} +`; + t.expectCompileResult(shouldPass(t.params.aliased, t.params.a_use, t.params.b_use), code); + }); + +g.test('one_pointer_one_module_scope') + .desc(`Test aliasing of a pointer with a direct access to a module-scope variable.`) + .params(u => + u + .combine('a_use', keysOf(kUses)) + .combine('b_use', keysOf(kUses)) + .combine('aliased', [true, false]) + .beginSubcases() + ) + .fn(t => { + const code = ` +var x : i32; +var y : i32; + +fn callee(pb : ptr) -> i32 { + ${kUses[t.params.a_use].gen(`x`)} + ${kUses[t.params.b_use].gen(`*pb`)} + return 0; +} + +fn caller() { + callee(${t.params.aliased ? `&x` : `&y`}); +} +`; + t.expectCompileResult(shouldPass(t.params.aliased, t.params.a_use, t.params.b_use), code); + }); + +g.test('subcalls') + .desc(`Test aliasing of two pointers passed to a function, and then passed to other functions.`) + .params(u => + u + .combine('a_use', ['no_access', 'assign', 'binary_lhs']) + .combine('b_use', ['no_access', 'assign', 'binary_lhs']) + .combine('aliased', [true, false]) + .beginSubcases() + ) + .fn(t => { + const code = ` +var x : i32; +var y : i32; + +fn subcall_no_access(p : ptr) { + let pp = &*p; +} + +fn subcall_binary_lhs(p : ptr) -> i32 { + return *p + 1; +} + +fn subcall_assign(p : ptr) { + *p = 42; +} + +fn callee(pa : ptr, pb : ptr) -> i32 { + let new_pa = &*pa; + let new_pb = &*pb; + subcall_${t.params.a_use}(new_pa); + subcall_${t.params.b_use}(new_pb); + return 0; +} + +fn caller() { + callee(&x, ${t.params.aliased ? `&x` : `&y`}); +} +`; + t.expectCompileResult(shouldPass(t.params.aliased, t.params.a_use, t.params.b_use), code); + }); + +g.test('member_accessors') + .desc(`Test aliasing of two pointers passed to a function and used with member accessors.`) + .params(u => + u + .combine('a_use', ['no_access', 'assign', 'binary_lhs']) + .combine('b_use', ['no_access', 'assign', 'binary_lhs']) + .combine('aliased', [true, false]) + .beginSubcases() + ) + .fn(t => { + const code = ` +struct S { a : i32 } + +var x : S; +var y : S; + +fn callee(pa : ptr, + pb : ptr) -> i32 { + ${kUses[t.params.a_use].gen(`(*pa).a`)} + ${kUses[t.params.b_use].gen(`(*pb).a`)} + return 0; +} + +fn caller() { + callee(&x, ${t.params.aliased ? `&x` : `&y`}); +} +`; + t.expectCompileResult(shouldPass(t.params.aliased, t.params.a_use, t.params.b_use), code); + }); + +g.test('same_pointer_read_and_write') + .desc(`Test that we can read from and write to the same pointer.`) + .params(u => u.beginSubcases()) + .fn(t => { + const code = ` +var v : i32; + +fn callee(p : ptr) { + *p = *p + 1; +} + +fn caller() { + callee(&v); +} +`; + t.expectCompileResult(true, code); + }); + +g.test('aliasing_inside_function') + .desc(`Test that we can alias pointers inside a function.`) + .params(u => u.beginSubcases()) + .fn(t => { + const code = ` +var v : i32; + +fn foo() { + var v : i32; + let p1 = &v; + let p2 = &v; + *p1 = 42; + *p2 = 42; +} +`; + t.expectCompileResult(true, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/restrictions.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/restrictions.spec.js new file mode 100644 index 00000000000..84167312ac8 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/functions/restrictions.spec.js @@ -0,0 +1,729 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for function restrictions`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kVertexPosCases = { + bare_position: { name: `@builtin(position) vec4f`, value: `vec4f()`, valid: true }, + nested_position: { name: `pos_struct`, value: `pos_struct()`, valid: true }, + no_bare_position: { name: `vec4f`, value: `vec4f()`, valid: false }, + no_nested_position: { name: `no_pos_struct`, value: `no_pos_struct()`, valid: false }, +}; + +g.test('vertex_returns_position') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc(`Test that a vertex shader should return position`) + .params(u => u.combine('case', keysOf(kVertexPosCases))) + .fn(t => { + const testcase = kVertexPosCases[t.params.case]; + const code = ` +struct pos_struct { + @builtin(position) pos : vec4f +} + +struct no_pos_struct { + @location(0) x : vec4f +} + +@vertex +fn main() -> ${testcase.name} { + return ${testcase.value}; +}`; + + t.expectCompileResult(testcase.valid, code); + }); + +g.test('entry_point_call_target') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc(`Test that an entry point cannot be the target of a function call`) + .params(u => + u + .combine('stage', ['@fragment', '@vertex', '@compute @workgroup_size(1,1,1)']) + .combine('entry_point', ['with', 'without']) + ) + .fn(t => { + const use_attr = t.params.entry_point === 'with'; + let ret_attr = ''; + if (use_attr && t.params.stage === '@vertex') { + ret_attr = '@builtin(position)'; + } + const ret = t.params.stage.indexOf('@vertex') === 0 ? `-> ${ret_attr} vec4f` : ''; + const ret_value = t.params.stage.indexOf('@vertex') === 0 ? `return vec4f();` : ''; + const call = t.params.stage.indexOf('@vertex') === 0 ? 'let tmp = bar();' : 'bar();'; + const stage_attr = use_attr ? t.params.stage : ''; + const code = ` +${stage_attr} +fn bar() ${ret} { + ${ret_value} +} + +fn foo() { + ${call} +} +`; + t.expectCompileResult(!use_attr, code); + }); + +const kFunctionRetTypeCases = { + // Constructible types, + u32: { name: `u32`, value: ``, valid: true }, + i32: { name: `i32`, value: ``, valid: true }, + f32: { name: `f32`, value: ``, valid: true }, + bool: { name: `bool`, value: ``, valid: true }, + f16: { name: `f16`, value: ``, valid: true }, + vec2: { name: `vec2u`, value: ``, valid: true }, + vec3: { name: `vec3i`, value: ``, valid: true }, + vec4: { name: `vec4f`, value: ``, valid: true }, + mat2x2: { name: `mat2x2f`, value: ``, valid: true }, + mat2x3: { name: `mat2x3f`, value: ``, valid: true }, + mat2x4: { name: `mat2x4f`, value: ``, valid: true }, + mat3x2: { name: `mat3x2f`, value: ``, valid: true }, + mat3x3: { name: `mat3x3f`, value: ``, valid: true }, + mat3x4: { name: `mat3x4f`, value: ``, valid: true }, + mat4x2: { name: `mat4x2f`, value: ``, valid: true }, + mat4x3: { name: `mat4x3f`, value: ``, valid: true }, + mat4x4: { name: `mat4x4f`, value: ``, valid: true }, + array1: { name: `array`, value: ``, valid: true }, + array2: { name: `array`, value: ``, valid: true }, + array3: { name: `array`, value: ``, valid: true }, + array4: { name: `array`, value: ``, valid: true }, + array5: { name: `array`, value: ``, valid: true }, + struct1: { name: `constructible`, value: ``, valid: true }, + struct2: { name: `struct_with_array`, value: ``, valid: true }, + + // Non-constructible types. + runtime_array: { name: `array`, value: ``, valid: false }, + runtime_struct: { name: `runtime_array_struct`, value: ``, valid: false }, + override_array: { name: `array`, value: ``, valid: false }, + atomic_u32: { name: `atomic`, value: `atomic_wg`, valid: false }, + atomic_struct: { name: `atomic_struct`, value: ``, valid: false }, + texture_sample: { name: `texture_2d`, value: `t`, valid: false }, + texture_depth: { name: `texture_depth_2d`, value: `t_depth`, valid: false }, + texture_multisampled: { + name: `texture_multisampled_2d`, + value: `t_multisampled`, + valid: false, + }, + texture_storage: { + name: `texture_storage_2d`, + value: `t_storage`, + valid: false, + }, + sampler: { name: `sampler`, value: `s`, valid: false }, + sampler_comparison: { name: `sampler_comparison`, value: `s_depth`, valid: false }, + ptr: { name: `ptr>`, value: `&atomic_wg`, valid: false }, +}; + +g.test('function_return_types') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc(`Test that function return types must be constructible`) + .params(u => u.combine('case', keysOf(kFunctionRetTypeCases))) + .beforeAllSubcases(t => { + if (kFunctionRetTypeCases[t.params.case].name === 'f16') { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const testcase = kFunctionRetTypeCases[t.params.case]; + const enable = testcase.name === 'f16' ? 'enable f16;' : ''; + const value = testcase.value === '' ? `${testcase.name}()` : testcase.value; + const code = ` +${enable} + +struct runtime_array_struct { + arr : array +} + +struct constructible { + a : i32, + b : u32, + c : f32, + d : bool, +} + +struct struct_with_array { + a : array +} + +struct atomic_struct { + a : atomic +}; + +override override_size : u32; + +var atomic_wg : atomic; + +@group(0) @binding(0) +var t : texture_2d; +@group(0) @binding(1) +var s : sampler; +@group(0) @binding(2) +var s_depth : sampler_comparison; +@group(0) @binding(3) +var t_storage : texture_storage_2d; +@group(0) @binding(4) +var t_depth : texture_depth_2d; +@group(0) @binding(5) +var t_multisampled : texture_multisampled_2d; +@group(0) @binding(6) +var t_external : texture_external; + +fn foo() -> ${testcase.name} { + return ${value}; +}`; + + t.expectCompileResult(testcase.valid, code); + }); + +const kFunctionParamTypeCases = { + // Constructible types, + u32: { name: `u32`, valid: true }, + i32: { name: `i32`, valid: true }, + f32: { name: `f32`, valid: true }, + bool: { name: `bool`, valid: true }, + f16: { name: `f16`, valid: true }, + vec2: { name: `vec2u`, valid: true }, + vec3: { name: `vec3i`, valid: true }, + vec4: { name: `vec4f`, valid: true }, + mat2x2: { name: `mat2x2f`, valid: true }, + mat2x3: { name: `mat2x3f`, valid: true }, + mat2x4: { name: `mat2x4f`, valid: true }, + mat3x2: { name: `mat3x2f`, valid: true }, + mat3x3: { name: `mat3x3f`, valid: true }, + mat3x4: { name: `mat3x4f`, valid: true }, + mat4x2: { name: `mat4x2f`, valid: true }, + mat4x3: { name: `mat4x3f`, valid: true }, + mat4x4: { name: `mat4x4f`, valid: true }, + array1: { name: `array`, valid: true }, + array2: { name: `array`, valid: true }, + array3: { name: `array`, valid: true }, + array4: { name: `array`, valid: true }, + array5: { name: `array`, valid: true }, + struct1: { name: `constructible`, valid: true }, + struct2: { name: `struct_with_array`, valid: true }, + + // Non-constructible types. + runtime_array: { name: `array`, valid: false }, + runtime_struct: { name: `runtime_array_struct`, valid: false }, + override_array: { name: `array`, valid: false }, + atomic_u32: { name: `atomic`, valid: false }, + atomic_struct: { name: `atomic_struct`, valid: false }, + + // Textures and samplers. + texture_sample: { name: `texture_2d`, valid: true }, + texture_depth: { name: `texture_depth_2d`, valid: true }, + texture_multisampled: { + name: `texture_multisampled_2d`, + valid: true, + }, + texture_storage: { name: `texture_storage_2d`, valid: true }, + sampler: { name: `sampler`, valid: true }, + sampler_comparison: { name: `sampler_comparison`, valid: true }, + + // Valid pointers. + ptr1: { name: `ptr`, valid: true }, + ptr2: { name: `ptr`, valid: true }, + ptr3: { name: `ptr`, valid: true }, + ptr4: { name: `ptr`, valid: true }, + + // Invalid pointers. + ptr5: { name: `ptr`, valid: false }, + ptr6: { name: `ptr`, valid: false }, + ptr7: { name: `ptr`, valid: false }, + ptr8: { name: `ptr`, valid: false }, + ptr9: { name: `ptr`, valid: false }, + ptr10: { name: `ptr`, valid: false }, // Can't spell handle address space + ptr12: { name: `ptr`, valid: false }, + ptr13: { name: `ptr`, valid: false }, // No store type + ptr14: { name: `ptr`, valid: false }, // Invalid store type + ptr15: { name: `ptr`, valid: false }, // Can't specify access mode + ptr16: { name: `ptr`, valid: false }, // Can't specify access mode + ptr17: { name: `ptr`, valid: false }, // Can't specify access mode + ptrWorkgroupAtomic: { name: `ptr>`, valid: false }, + ptrWorkgroupNestedAtomic: { name: `ptr,1>>`, valid: false }, +}; + +g.test('function_parameter_types') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc(`Test validation of user-declared function parameter types`) + .params(u => u.combine('case', keysOf(kFunctionParamTypeCases))) + .beforeAllSubcases(t => { + if (kFunctionParamTypeCases[t.params.case].name === 'f16') { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const testcase = kFunctionParamTypeCases[t.params.case]; + const enable = testcase.name === 'f16' ? 'enable f16;' : ''; + const code = ` +${enable} + +struct runtime_array_struct { + arr : array +} + +struct constructible { + a : i32, + b : u32, + c : f32, + d : bool, +} + +struct struct_with_array { + a : array +} + +fn foo(param : ${testcase.name}) { +}`; + + t.expectCompileResult(testcase.valid, code); + }); + +const kFunctionParamValueCases = { + // Values + u32_literal: { value: `0u`, matches: ['u32'] }, + i32_literal: { value: `0i`, matches: ['i32'] }, + f32_literal: { value: `0f`, matches: ['f32'] }, + bool_literal: { value: `false`, matches: ['bool'] }, + abstract_int_literal: { value: `0`, matches: ['u32', 'i32', 'f32', 'f16'] }, + abstract_float_literal: { value: `0.0`, matches: ['f32', 'f16'] }, + vec2u_constructor: { value: `vec2u()`, matches: ['vec2'] }, + vec2i_constructor: { value: `vec2i()`, matches: [] }, + vec2f_constructor: { value: `vec2f()`, matches: [] }, + vec2b_constructor: { value: `vec2()`, matches: [] }, + vec3u_constructor: { value: `vec3u()`, matches: [] }, + vec3i_constructor: { value: `vec3i()`, matches: ['vec3'] }, + vec3f_constructor: { value: `vec3f()`, matches: [] }, + vec3b_constructor: { value: `vec3()`, matches: [] }, + vec4u_constructor: { value: `vec4u()`, matches: [] }, + vec4i_constructor: { value: `vec4i()`, matches: [] }, + vec4f_constructor: { value: `vec4f()`, matches: ['vec4'] }, + vec4b_constructor: { value: `vec4()`, matches: [] }, + vec2_abstract_int: { value: `vec2(0,0)`, matches: ['vec2'] }, + vec2_abstract_float: { value: `vec2(0.0,0)`, matches: [] }, + vec3_abstract_int: { value: `vec3(0,0,0)`, matches: ['vec3'] }, + vec3_abstract_float: { value: `vec3(0.0,0,0)`, matches: [] }, + vec4_abstract_int: { value: `vec4(0,0,0,0)`, matches: ['vec4'] }, + vec4_abstract_float: { value: `vec4(0.0,0,0,0)`, matches: ['vec4'] }, + mat2x2_constructor: { value: `mat2x2f()`, matches: ['mat2x2'] }, + mat2x3_constructor: { value: `mat2x3f()`, matches: ['mat2x3'] }, + mat2x4_constructor: { value: `mat2x4f()`, matches: ['mat2x4'] }, + mat3x2_constructor: { value: `mat3x2f()`, matches: ['mat3x2'] }, + mat3x3_constructor: { value: `mat3x3f()`, matches: ['mat3x3'] }, + mat3x4_constructor: { value: `mat3x4f()`, matches: ['mat3x4'] }, + mat4x2_constructor: { value: `mat4x2f()`, matches: ['mat4x2'] }, + mat4x3_constructor: { value: `mat4x3f()`, matches: ['mat4x3'] }, + mat4x4_constructor: { value: `mat4x4f()`, matches: ['mat4x4'] }, + array1_constructor: { value: `array()`, matches: ['array1'] }, + array2_constructor: { value: `array()`, matches: ['array2'] }, + array3_constructor: { value: `array()`, matches: ['array3'] }, + array4_constructor: { value: `array()`, matches: ['array4'] }, + array5_constructor: { value: `array()`, matches: ['array5'] }, + struct1_constructor: { value: `constructible()`, matches: ['struct1'] }, + struct2_constructor: { value: `struct_with_array()`, matches: ['struct2'] }, + + // Variable references + g_u32: { value: `g_u32`, matches: ['u32'] }, + g_i32: { value: `g_i32`, matches: ['i32'] }, + g_f32: { value: `g_f32`, matches: ['f32'] }, + g_bool: { value: `g_bool`, matches: ['bool'] }, + g_vec2: { value: `g_vec2`, matches: ['vec2'] }, + g_vec3: { value: `g_vec3`, matches: ['vec3'] }, + g_vec4: { value: `g_vec4`, matches: ['vec4'] }, + g_mat2x2: { value: `g_mat2x2`, matches: ['mat2x2'] }, + g_mat2x3: { value: `g_mat2x3`, matches: ['mat2x3'] }, + g_mat2x4: { value: `g_mat2x4`, matches: ['mat2x4'] }, + g_mat3x2: { value: `g_mat3x2`, matches: ['mat3x2'] }, + g_mat3x3: { value: `g_mat3x3`, matches: ['mat3x3'] }, + g_mat3x4: { value: `g_mat3x4`, matches: ['mat3x4'] }, + g_mat4x2: { value: `g_mat4x2`, matches: ['mat4x2'] }, + g_mat4x3: { value: `g_mat4x3`, matches: ['mat4x3'] }, + g_mat4x4: { value: `g_mat4x4`, matches: ['mat4x4'] }, + g_array1: { value: `g_array1`, matches: ['array1'] }, + g_array2: { value: `g_array2`, matches: ['array2'] }, + g_array3: { value: `g_array3`, matches: ['array3'] }, + g_array4: { value: `g_array4`, matches: ['array4'] }, + g_array5: { value: `g_array5`, matches: ['array5'] }, + g_constructible: { value: `g_constructible`, matches: ['struct1'] }, + g_struct_with_array: { value: `g_struct_with_array`, matches: ['struct2'] }, + f_u32: { value: `f_u32`, matches: ['u32'] }, + f_i32: { value: `f_i32`, matches: ['i32'] }, + f_f32: { value: `f_f32`, matches: ['f32'] }, + f_bool: { value: `f_bool`, matches: ['bool'] }, + f_vec2: { value: `f_vec2`, matches: ['vec2'] }, + f_vec3: { value: `f_vec3`, matches: ['vec3'] }, + f_vec4: { value: `f_vec4`, matches: ['vec4'] }, + f_mat2x2: { value: `f_mat2x2`, matches: ['mat2x2'] }, + f_mat2x3: { value: `f_mat2x3`, matches: ['mat2x3'] }, + f_mat2x4: { value: `f_mat2x4`, matches: ['mat2x4'] }, + f_mat3x2: { value: `f_mat3x2`, matches: ['mat3x2'] }, + f_mat3x3: { value: `f_mat3x3`, matches: ['mat3x3'] }, + f_mat3x4: { value: `f_mat3x4`, matches: ['mat3x4'] }, + f_mat4x2: { value: `f_mat4x2`, matches: ['mat4x2'] }, + f_mat4x3: { value: `f_mat4x3`, matches: ['mat4x3'] }, + f_mat4x4: { value: `f_mat4x4`, matches: ['mat4x4'] }, + f_array1: { value: `f_array1`, matches: ['array1'] }, + f_array2: { value: `f_array2`, matches: ['array2'] }, + f_array3: { value: `f_array3`, matches: ['array3'] }, + f_array4: { value: `f_array4`, matches: ['array4'] }, + f_array5: { value: `f_array5`, matches: ['array5'] }, + f_constructible: { value: `f_constructible`, matches: ['struct1'] }, + f_struct_with_array: { value: `f_struct_with_array`, matches: ['struct2'] }, + g_index_u32: { value: `g_constructible.b`, matches: ['u32'] }, + g_index_i32: { value: `g_constructible.a`, matches: ['i32'] }, + g_index_f32: { value: `g_constructible.c`, matches: ['f32'] }, + g_index_bool: { value: `g_constructible.d`, matches: ['bool'] }, + f_index_u32: { value: `f_constructible.b`, matches: ['u32'] }, + f_index_i32: { value: `f_constructible.a`, matches: ['i32'] }, + f_index_f32: { value: `f_constructible.c`, matches: ['f32'] }, + f_index_bool: { value: `f_constructible.d`, matches: ['bool'] }, + g_array_index_u32: { value: `g_struct_with_array.a[0].b`, matches: ['u32'] }, + g_array_index_i32: { value: `g_struct_with_array.a[1].a`, matches: ['i32'] }, + g_array_index_f32: { value: `g_struct_with_array.a[2].c`, matches: ['f32'] }, + g_array_index_bool: { value: `g_struct_with_array.a[3].d`, matches: ['bool'] }, + f_array_index_u32: { value: `f_struct_with_array.a[0].b`, matches: ['u32'] }, + f_array_index_i32: { value: `f_struct_with_array.a[1].a`, matches: ['i32'] }, + f_array_index_f32: { value: `f_struct_with_array.a[2].c`, matches: ['f32'] }, + f_array_index_bool: { value: `f_struct_with_array.a[3].d`, matches: ['bool'] }, + + // Textures and samplers + texture_sample: { value: `t`, matches: ['texture_sample'] }, + texture_depth: { value: `t_depth`, matches: ['texture_depth'] }, + texture_multisampled: { value: `t_multisampled`, matches: ['texture_multisampled'] }, + texture_storage: { value: `t_storage`, matches: ['texture_storage'] }, + texture_external: { value: `t_external`, matches: ['texture_external'] }, + sampler: { value: `s`, matches: ['sampler'] }, + sampler_comparison: { value: `s_depth`, matches: ['sampler_comparison'] }, + + // Pointers + ptr1: { value: `&f_u32`, matches: ['ptr1'] }, + ptr2: { value: `&f_constructible`, matches: ['ptr2'] }, + ptr3: { value: `&g_u32`, matches: ['ptr3'] }, + ptr4: { value: `&g_constructible`, matches: ['ptr4'] }, + + // Invalid pointers + ptr5: { value: `&f_constructible.b`, matches: [] }, + ptr6: { value: `&g_constructible.b`, matches: [] }, + ptr7: { value: `&f_struct_with_array.a[1].b`, matches: [] }, + ptr8: { value: `&g_struct_with_array.a[2]`, matches: [] }, + ptr9: { value: `&ro_constructible.b`, matches: [] }, + ptr10: { value: `&rw_constructible`, matches: [] }, + ptr11: { value: `&uniform_constructible`, matches: [] }, + ptr12: { value: `&ro_constructible`, matches: [] }, +}; + +function parameterMatches(decl, matches) { + for (const val of matches) { + if (decl === val) { + return true; + } + } + return false; +} + +g.test('function_parameter_matching') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc( + `Test that function parameter types match function parameter type on user-declared functions` + ) + .params(u => + u + .combine('decl', keysOf(kFunctionParamTypeCases)) + .combine('arg', keysOf(kFunctionParamValueCases)) + .filter(u => { + return kFunctionParamTypeCases[u.decl].valid; + }) + ) + .beforeAllSubcases(t => { + if (kFunctionParamTypeCases[t.params.decl].name === 'f16') { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const param = kFunctionParamTypeCases[t.params.decl]; + const arg = kFunctionParamValueCases[t.params.arg]; + const enable = param.name === 'f16' ? 'enable f16;' : ''; + const code = ` +${enable} + +struct runtime_array_struct { + arr : array +} + +struct constructible { + a : i32, + b : u32, + c : f32, + d : bool, +} + +struct host_shareable { + a : i32, + b : u32, + c : f32, +} + +struct struct_with_array { + a : array +} +@group(0) @binding(0) +var t : texture_2d; +@group(0) @binding(1) +var s : sampler; +@group(0) @binding(2) +var s_depth : sampler_comparison; +@group(0) @binding(3) +var t_storage : texture_storage_2d; +@group(0) @binding(4) +var t_depth : texture_depth_2d; +@group(0) @binding(5) +var t_multisampled : texture_multisampled_2d; +@group(0) @binding(6) +var t_external : texture_external; + +@group(1) @binding(0) +var ro_constructible : host_shareable; +@group(1) @binding(1) +var rw_constructible : host_shareable; +@group(1) @binding(2) +var uniform_constructible : host_shareable; + +fn bar(param : ${param.name}) { } + +var g_u32 : u32; +var g_i32 : i32; +var g_f32 : f32; +var g_bool : bool; +var g_vec2 : vec2u; +var g_vec3 : vec3i; +var g_vec4 : vec4f; +var g_mat2x2 : mat2x2f; +var g_mat2x3 : mat2x3f; +var g_mat2x4 : mat2x4f; +var g_mat3x2 : mat3x2f; +var g_mat3x3 : mat3x3f; +var g_mat3x4 : mat3x4f; +var g_mat4x2 : mat4x2f; +var g_mat4x3 : mat4x3f; +var g_mat4x4 : mat4x4f; +var g_array1 : array; +var g_array2 : array; +var g_array3 : array; +var g_array4 : array; +var g_array5 : array; +var g_constructible : constructible; +var g_struct_with_array : struct_with_array; + +fn foo() { + var f_u32 : u32; + var f_i32 : i32; + var f_f32 : f32; + var f_bool : bool; + var f_vec2 : vec2u; + var f_vec3 : vec3i; + var f_vec4 : vec4f; + var f_mat2x2 : mat2x2f; + var f_mat2x3 : mat2x3f; + var f_mat2x4 : mat2x4f; + var f_mat3x2 : mat3x2f; + var f_mat3x3 : mat3x3f; + var f_mat3x4 : mat3x4f; + var f_mat4x2 : mat4x2f; + var f_mat4x3 : mat4x3f; + var f_mat4x4 : mat4x4f; + var f_array1 : array; + var f_array2 : array; + var f_array3 : array; + var f_array4 : array; + var f_array5 : array; + var f_constructible : constructible; + var f_struct_with_array : struct_with_array; + + bar(${arg.value}); +} +`; + + t.expectCompileResult(parameterMatches(t.params.decl, arg.matches), code); + }); + +g.test('no_direct_recursion') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc(`Test that functions cannot be directly recursive`) + .fn(t => { + const code = ` +fn foo() { + foo(); +}`; + + t.expectCompileResult(false, code); + }); + +g.test('no_indirect_recursion') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-restriction') + .desc(`Test that functions cannot be indirectly recursive`) + .fn(t => { + const code = ` +fn bar() { + foo(); +} +fn foo() { + bar(); +}`; + + t.expectCompileResult(false, code); + }); + +g.test('param_names_must_differ') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-declaration-sec') + .desc(`Test that function parameters must have different names`) + .params(u => u.combine('p1', ['a', 'b', 'c']).combine('p2', ['a', 'b', 'c'])) + .fn(t => { + const code = `fn foo(${t.params.p1} : u32, ${t.params.p2} : f32) { }`; + t.expectCompileResult(t.params.p1 !== t.params.p2, code); + }); + +const kParamUseCases = { + body: `fn foo(param : u32) { + let tmp = param; + }`, + var: `var v : u32 = param; + fn foo(param : u32) { }`, + const: `const c : u32 = param; + fn foo(param : u32) { }`, + override: `override o : u32 = param; + fn foo(param : u32) { }`, + function: `fn bar() { let tmp = param; } + fn foo(param : u32) { }`, +}; + +g.test('param_scope_is_function_body') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-declaration-sec') + .desc(`Test that function parameters are only in scope in the function body`) + .params(u => u.combine('use', keysOf(kParamUseCases))) + .fn(t => { + t.expectCompileResult(t.params.use === 'body', kParamUseCases[t.params.use]); + }); + +g.test('param_number_matches_call') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-calls') + .desc(`Test that function calls have an equal number of arguments as the number of parameters`) + .params(u => + u.combine('num_args', [0, 1, 2, 3, 4, 255]).combine('num_params', [0, 1, 2, 3, 4, 255]) + ) + .fn(t => { + let code = ` + fn bar(`; + for (let i = 0; i < t.params.num_params; i++) { + code += `p${i} : u32,`; + } + code += `) { }\n`; + code += `fn foo() {\nbar(`; + for (let i = 0; i < t.params.num_args; i++) { + code += `0,`; + } + code += `);\n}`; + t.expectCompileResult(t.params.num_args === t.params.num_params, code); + }); + +const kParamsTypes = ['u32', 'i32', 'f32']; + +const kArgValues = { + abstract_int: { + value: '0', + matches: ['u32', 'i32', 'f32'], + }, + abstract_float: { + value: '0.0', + matches: ['f32'], + }, + unsigned_int: { + value: '0u', + matches: ['u32'], + }, + signed_int: { + value: '0i', + matches: ['i32'], + }, + float: { + value: '0f', + matches: ['f32'], + }, +}; + +function checkArgTypeMatch(param_type, arg_matches) { + for (const match of arg_matches) { + if (match === param_type) { + return true; + } + } + return false; +} + +g.test('call_arg_types_match_params') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#function-calls') + .desc(`Test that the argument types match in order`) + .params(u => + u + .combine('num_args', [1, 2, 3]) + .combine('p1_type', kParamsTypes) + .combine('p2_type', kParamsTypes) + .combine('p3_type', kParamsTypes) + .combine('arg1_value', keysOf(kArgValues)) + .combine('arg2_value', keysOf(kArgValues)) + .combine('arg3_value', keysOf(kArgValues)) + ) + .fn(t => { + let code = ` + fn bar(`; + for (let i = 0; i < t.params.num_args; i++) { + switch (i) { + case 0: + default: { + code += `p${i} : ${t.params.p1_type},`; + break; + } + case 1: { + code += `p${i} : ${t.params.p2_type},`; + break; + } + case 2: { + code += `p${i} : ${t.params.p3_type},`; + break; + } + } + } + code += `) { } + fn foo() { + bar(`; + for (let i = 0; i < t.params.num_args; i++) { + switch (i) { + case 0: + default: { + code += `${kArgValues[t.params.arg1_value].value},`; + break; + } + case 1: { + code += `${kArgValues[t.params.arg2_value].value},`; + break; + } + case 2: { + code += `${kArgValues[t.params.arg3_value].value},`; + break; + } + } + } + code += `);\n}`; + + let res = checkArgTypeMatch(t.params.p1_type, kArgValues[t.params.arg1_value].matches); + if (res && t.params.num_args > 1) { + res = checkArgTypeMatch(t.params.p2_type, kArgValues[t.params.arg2_value].matches); + } + if (res && t.params.num_args > 2) { + res = checkArgTypeMatch(t.params.p3_type, kArgValues[t.params.arg3_value].matches); + } + t.expectCompileResult(res, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/diagnostic.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/diagnostic.spec.js new file mode 100644 index 00000000000..42530a004be --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/diagnostic.spec.js @@ -0,0 +1,201 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for diagnostic directive and attribute`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kSpecDiagnosticRules = ['derivative_uniformity']; +const kSpecDiagnosticSeverities = ['off', 'info', 'warning', 'error']; +const kDiagnosticTypes = ['attribute', 'directive']; + +const kBadSeverities = ['none', 'warn', 'goose', 'fatal', 'severe']; +const kBadSingleTokenRules = ['unknown', 'blahblahblah', 'derivative_uniform']; + +function generateDiagnostic(type, severity, rule) { + const diagnostic = `diagnostic(${severity}, ${rule})`; + if (type === 'directive') { + return diagnostic; + } else { + return '@' + diagnostic; + } +} + +const kValidLocations = { + module: diag => `${diag};`, + function: diag => `${diag} fn foo() { }`, + compound: diag => `fn foo() { ${diag} { } }`, + if_stmt: diag => `fn foo() { ${diag} if true { } }`, + if_then: diag => `fn foo() { if true ${diag} { } }`, + if_else: diag => `fn foo() { if true { } else ${diag} { } }`, + switch_stmt: diag => `fn foo() { ${diag} switch 0 { default { } } }`, + switch_body: diag => `fn foo() { switch 0 ${diag} { default { } } }`, + switch_default: diag => `fn foo() { switch 0 { default ${diag} { } } }`, + switch_case: diag => `fn foo() { switch 0 { case 0 ${diag} { } default { } } }`, + loop_stmt: diag => `fn foo() { ${diag} loop { break; } }`, + loop_body: diag => `fn foo() { loop ${diag} { break; } }`, + loop_continuing: diag => `fn foo() { loop { continuing ${diag} { break if true; } } }`, + while_stmt: diag => `fn foo() { ${diag} while true { break; } }`, + while_body: diag => `fn foo() { while true ${diag} { break; } }`, + for_stmt: diag => `fn foo() { ${diag} for (var i = 0; i < 10; i++) { } }`, + for_body: diag => `fn foo() { for (var i = 0; i < 10; i++) ${diag} { } }`, +}; + +const kInvalidLocations = { + module_var: diag => `${diag} var x : u32;`, + module_const: diag => `${diag} const x = 0;`, + module_override: diag => `${diag} override x : u32;`, + struct: diag => `${diag} struct S { x : u32 }`, + struct_member: diag => ` struct S { ${diag} x : u32 }`, + function_params: diag => `fn foo${diag}() { }`, + function_var: diag => `fn foo() { ${diag} var x = 0; }`, + function_let: diag => `fn foo() { ${diag} let x = 0; }`, + function_const: diag => `fn foo() { ${diag} const x = 0; }`, + pre_else: diag => `fn foo() { if true { } ${diag} else { } }`, + pre_default: diag => `fn foo() { switch 0 { ${diag} default { } } }`, + pre_case: diag => `fn foo() { switch 0 { ${diag} case 0 { } default { } } }`, + pre_continuing: diag => `fn foo() { loop { ${diag} continuing { break if true; } } }`, + pre_for_params: diag => `fn foo() { for ${diag} (var i = 0; i < 10; i++) { } }`, +}; + +const kNestedLocations = { + compound: (d1, d2) => `${d1} fn foo() { ${d2} { } }`, + if_stmt: (d1, d2) => `fn foo() { ${d1} if true ${d2} { } }`, + switch_stmt: (d1, d2) => `fn foo() { ${d1} switch 0 ${d2} { default { } } }`, + switch_body: (d1, d2) => `fn foo() { switch 0 ${d1} { default ${d2} { } } }`, + switch_case: (d1, d2) => `fn foo() { switch 0 { case 0 ${d1} { } default ${d2} { } } }`, + loop_stmt: (d1, d2) => `fn foo() { ${d1} loop ${d2} { break; } }`, + while_stmt: (d1, d2) => `fn foo() { ${d1} while true ${d2} { break; } }`, + for_stmt: (d1, d2) => `fn foo() { ${d1} for (var i = 0; i < 10; i++) ${d2} { } }`, +}; + +g.test('valid_params') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests required accepted diagnostic parameters`) + .params(u => + u + .combine('severity', kSpecDiagnosticSeverities) + .combine('rule', kSpecDiagnosticRules) + .combine('type', kDiagnosticTypes) + ) + .fn(t => { + const diag = generateDiagnostic(t.params.type, t.params.severity, t.params.rule); + let code = ``; + if (t.params.type === 'directive') { + code = kValidLocations['module'](diag); + } else { + code = kValidLocations['function'](diag); + } + t.expectCompileResult(true, code); + }); + +g.test('invalid_severity') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests invalid severities are rejected`) + .params(u => u.combine('severity', kBadSeverities).combine('type', kDiagnosticTypes)) + .fn(t => { + const diag = generateDiagnostic(t.params.type, t.params.severity, 'derivative_uniformity'); + let code = ``; + if (t.params.type === 'directive') { + code = kValidLocations['module'](diag); + } else { + code = kValidLocations['function'](diag); + } + t.expectCompileResult(false, code); + }); + +g.test('warning_unknown_rule') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests unknown single token rules issue a warning`) + .params(u => u.combine('type', kDiagnosticTypes).combine('rule', kBadSingleTokenRules)) + .fn(t => { + const diag = generateDiagnostic(t.params.type, 'info', t.params.rule); + let code = ``; + if (t.params.type === 'directive') { + code = kValidLocations['module'](diag); + } else { + code = kValidLocations['function'](diag); + } + t.expectCompileWarning(true, code); + }); + +g.test('valid_locations') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests valid locations`) + .params(u => u.combine('type', kDiagnosticTypes).combine('location', keysOf(kValidLocations))) + .fn(t => { + const diag = generateDiagnostic(t.params.type, 'info', 'derivative_uniformity'); + const code = kValidLocations[t.params.location](diag); + let res = true; + if (t.params.type === 'directive') { + res = t.params.location === 'module'; + } else { + res = t.params.location !== 'module'; + } + if (res === false) { + t.expectCompileResult(true, kValidLocations[t.params.location]('')); + } + t.expectCompileResult(res, code); + }); + +g.test('invalid_locations') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests invalid locations`) + .params(u => u.combine('type', kDiagnosticTypes).combine('location', keysOf(kInvalidLocations))) + .fn(t => { + const diag = generateDiagnostic(t.params.type, 'info', 'derivative_uniformity'); + t.expectCompileResult(true, kInvalidLocations[t.params.location]('')); + t.expectCompileResult(false, kInvalidLocations[t.params.location](diag)); + }); + +g.test('conflicting_directive') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests conflicts between directives`) + .params(u => u.combine('s1', kSpecDiagnosticSeverities).combine('s2', kSpecDiagnosticSeverities)) + .fn(t => { + const d1 = generateDiagnostic('directive', t.params.s1, 'derivative_uniformity'); + const d2 = generateDiagnostic('directive', t.params.s2, 'derivative_uniformity'); + const code = `${kValidLocations['module'](d1)}\n${kValidLocations['module'](d2)}`; + t.expectCompileResult(t.params.s1 === t.params.s2, code); + }); + +g.test('conflicting_attribute_same_location') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests conflicts between attributes`) + .params(u => + u + .combine('loc', keysOf(kValidLocations)) + .combine('s1', kSpecDiagnosticSeverities) + .combine('s2', kSpecDiagnosticSeverities) + .filter(u => { + return u.loc !== 'module'; + }) + ) + .fn(t => { + const d1 = generateDiagnostic('attribute', t.params.s1, 'derivative_uniformity'); + const d2 = generateDiagnostic('attribute', t.params.s2, 'derivative_uniformity'); + const diag = d1 + ' ' + d2; + const code = `${kValidLocations[t.params.loc](diag)}`; + t.expectCompileResult(t.params.s1 === t.params.s2, code); + }); + +g.test('conflicting_attribute_different_location') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#diagnostics') + .desc(`Tests conflicts between attributes`) + .params(u => + u + .combine('loc', keysOf(kNestedLocations)) + .combine('s1', kSpecDiagnosticSeverities) + .combine('s2', kSpecDiagnosticSeverities) + .filter(u => { + return u.s1 !== u.s2; + }) + ) + .fn(t => { + const d1 = generateDiagnostic('attribute', t.params.s1, 'derivative_uniformity'); + const d2 = generateDiagnostic('attribute', t.params.s2, 'derivative_uniformity'); + const code = `${kNestedLocations[t.params.loc](d1, d2)}`; + t.expectCompileResult(true, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/identifiers.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/identifiers.spec.js index 92b19619f31..2478ff096a1 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/identifiers.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/identifiers.spec.js @@ -268,8 +268,10 @@ const kInvalidIdentifiers = new Set([ 'yield', ]); -g.test('identifiers') - .desc(`Test that valid identifiers are accepted, and invalid identifiers are rejected.`) +g.test('module_var_name') + .desc( + `Test that valid identifiers are accepted for names of module-scope 'var's, and invalid identifiers are rejected.` + ) .params(u => u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() ) @@ -279,6 +281,125 @@ g.test('identifiers') t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); }); +g.test('module_const_name') + .desc( + `Test that valid identifiers are accepted for names of module-scope 'const's, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const type = t.params.ident === 'i32' ? 'u32' : 'i32'; + const code = `const ${t.params.ident} : ${type} = 0;`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('override_name') + .desc( + `Test that valid identifiers are accepted for names of 'override's, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const type = t.params.ident === 'i32' ? 'u32' : 'i32'; + const code = `override ${t.params.ident} : ${type} = 0;`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('function_name') + .desc( + `Test that valid identifiers are accepted for names of functions, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const code = `fn ${t.params.ident}() {}`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('struct_name') + .desc( + `Test that valid identifiers are accepted for names of structs, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const type = t.params.ident === 'i32' ? 'u32' : 'i32'; + const code = `struct ${t.params.ident} { i : ${type} }`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('alias_name') + .desc( + `Test that valid identifiers are accepted for names of aliases, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const type = t.params.ident === 'i32' ? 'u32' : 'i32'; + const code = `alias ${t.params.ident} = ${type};`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('function_param_name') + .desc( + `Test that valid identifiers are accepted for names of function parameters, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const type = t.params.ident === 'i32' ? 'u32' : 'i32'; + const code = `fn F(${t.params.ident} : ${type}) {}`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('function_const_name') + .desc( + `Test that valid identifiers are accepted for names of function-scoped 'const's, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const code = `fn F() { + const ${t.params.ident} = 1; +}`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('function_let_name') + .desc( + `Test that valid identifiers are accepted for names of function-scoped 'let's, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const code = `fn F() { + let ${t.params.ident} = 1; +}`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + +g.test('function_var_name') + .desc( + `Test that valid identifiers are accepted for names of function-scoped 'var's, and invalid identifiers are rejected.` + ) + .params(u => + u.combine('ident', new Set([...kValidIdentifiers, ...kInvalidIdentifiers])).beginSubcases() + ) + .fn(t => { + const code = `fn F() { + var ${t.params.ident} = 1; +}`; + t.expectCompileResult(kValidIdentifiers.has(t.params.ident), code); + }); + g.test('non_normalized') .desc(`Test that identifiers are not unicode normalized`) .fn(t => { diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/literal.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/literal.spec.js index a1ca97984e8..3d5b74ccd5b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/literal.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/literal.spec.js @@ -195,7 +195,7 @@ const kAbstractFloat = new Set([ ]); const kInvalidF16s = new Set([ '1.1eh', // Missing exponent value - '1.1e%2h', // Invalid exponent sign + '1.1e!2h', // Invalid exponent sign '1.1e+h', // Missing exponent with sign '1.0e+999999h', // Too large '0x1.0p+999999h', // Too large hex @@ -279,7 +279,7 @@ const kAbstractFloat = new Set([ '1u', // unsigned int '1f', // no conversion from f32 to f16 '1.1eh', // Missing exponent value - '1.1e%2h', // Invalid exponent sign + '1.1e!2h', // Invalid exponent sign '1.1e+h', // Missing exponent with sign '1.0e+999999h', // Too large '0x1.0p+999999h', // Too large hex diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/must_use.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/must_use.spec.js new file mode 100644 index 00000000000..75191aeab83 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/must_use.spec.js @@ -0,0 +1,266 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for @must_use`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kMustUseDeclarations = { + var: { + code: `@must_use @group(0) @binding(0) + var x : array;`, + valid: false, + }, + function_no_return: { + code: `@must_use fn foo() { }`, + valid: false, + }, + function_scalar_return: { + code: `@must_use fn foo() -> u32 { return 0; }`, + valid: true, + }, + function_struct_return: { + code: `struct S { x : u32 } + @must_use fn foo() -> S { return S(); }`, + valid: true, + }, + function_var: { + code: `fn foo() { @must_use var x = 0; }`, + valid: false, + }, + function_call: { + code: `fn bar() -> u32 { return 0; } + fn foo() { @must_use bar(); }`, + valid: false, + }, + function_parameter: { + code: `fn foo(@must_use param : u32) -> u32 { return param; }`, + valid: false, + }, + empty_parameter: { + code: `@must_use() fn foo() -> u32 { return 0; }`, + valid: false, + }, + parameter: { + code: `@must_use(0) fn foo() -> u32 { return 0; }`, + valid: false, + }, +}; + +g.test('declaration') + .desc(`Validate attribute can only be applied to a function declaration with a return type`) + .params(u => u.combine('test', keysOf(kMustUseDeclarations))) + .fn(t => { + const test = kMustUseDeclarations[t.params.test]; + t.expectCompileResult(test.valid, test.code); + }); + +const kMustUseCalls = { + phony: `_ = bar();`, + let: `let tmp = bar();`, + var: `var tmp = bar();`, + condition: `if bar() == 0 { }`, + param: `baz(bar());`, + statement: `bar();`, +}; + +g.test('call') + .desc(`Validate that a call to must_use function cannot be the whole function call statement`) + .params(u => u.combine('use', ['@must_use', '']).combine('call', keysOf(kMustUseCalls))) + .fn(t => { + const test = kMustUseCalls[t.params.call]; + const code = ` + fn baz(param : u32) { } + ${t.params.use} fn bar() -> u32 { return 0; } + fn foo() { + ${test} + }`; + const res = t.params.call !== 'statement' || t.params.use === ''; + t.expectCompileResult(res, code); + }); + +const kMustUseBuiltinCalls = { + // Type constructors + u32: `u32()`, + i32: `i32(0)`, + struct: `S()`, + // Reinterpretation + bitcast: `bitcast(8u)`, + // Logical + all: `all(vec2(true))`, + any: `any(vec2(true))`, + select: `select(0i, 1i, true)`, + // Array + arrayLength: `arrayLength(&storage_var)`, + // Numeric + abs: `abs(0.5)`, + acos: `acos(0.5)`, + acosh: `acosh(1.0)`, + asin: `asin(0.5)`, + asinh: `asinh(0.5)`, + atan: `atan(0.5)`, + atanh: `atanh(0.5)`, + atan2: `atan2(0.5, 0.5)`, + ceil: `ceil(0.5)`, + clamp: `clamp(0.5, 0.1, 1.0)`, + cos: `cos(0.5)`, + cosh: `cosh(0.5)`, + countLeadingZeros: `countLeadingZeros(0)`, + countOneBits: `countOneBits(0)`, + countTrailingZeros: `countTrailingZeros(0)`, + cross: `cross(vec3f(), vec3f())`, + degrees: `degrees(0.5)`, + determinant: `determinant(mat2x2f())`, + distance: `distance(0.5, 0.5)`, + dot: `dot(vec2f(0.5, 0.5), vec2f(0.5, 0.5))`, + exp: `exp(0.5)`, + exp2: `exp2(0.5)`, + extractBits: `extractBits(0, 0, 1)`, + faceForward: `faceForward(vec2f(), vec2f(), vec2f())`, + firstLeadingBit: `firstLeadingBit(0)`, + firstTrailingBit: `firstTrailingBit(0)`, + floor: `floor(0.5)`, + fma: `fma(0.5, 0.5, 0.5)`, + fract: `fract(0.5)`, + frexp: `frexp(0.5)`, + insertBits: `insertBits(0, 0, 0, 1)`, + inverseSqrt: `inverseSqrt(0.5)`, + ldexp: `ldexp(0.5, 1)`, + length: `length(0.5)`, + log: `log(0.5)`, + log2: `log2(0.5)`, + max: `max(0, 0)`, + min: `min(0, 0)`, + mix: `mix(0.5, 0.5, 0.5)`, + modf: `modf(0.5)`, + normalize: `normalize(vec2f(0.5, 0.5))`, + pow: `pow(0.5, 0.5)`, + quantizeToF16: `quantizeToF16(0.5)`, + radians: `radians(0.5)`, + reflect: `reflect(vec2f(0.5, 0.5), vec2f(0.5, 0.5))`, + refract: `refract(vec2f(0.5, 0.5), vec2f(0.5, 0.5), 0.5)`, + reverseBits: `reverseBits(0)`, + round: `round(0.5)`, + saturate: `saturate(0.5)`, + sign: `sign(0.5)`, + sin: `sin(0.5)`, + sinh: `sinh(0.5)`, + smoothstep: `smoothstep(0.1, 1.0, 0.5)`, + sqrt: `sqrt(0.5)`, + step: `step(0.1, 0.5)`, + tan: `tan(0.5)`, + tanh: `tanh(0.5)`, + transpose: `transpose(mat2x2f())`, + trunc: `trunc(0.5)`, + // Derivative + dpdx: `dpdx(0.5)`, + dpdxCoarse: `dpdxCoarse(0.5)`, + dpdxFine: `dpdxFine(0.5)`, + dpdy: `dpdy(0.5)`, + dpdyCoarse: `dpdyCoarse(0.5)`, + dpdyFine: `dpdyFine(0.5)`, + fwidth: `fwidth(0.5)`, + fwidthCoarse: `fwidthCoarse(0.5)`, + fwidthFine: `fwidthFine(0.5)`, + // Texture + textureDimensions: `textureDimensions(tex_2d)`, + textureGather: `textureGather(0, tex_2d, s, vec2f(0,0))`, + textureGatherCompare: `textureGatherCompare(tex_depth_2d, s_comp, vec2f(0,0), 0)`, + textureLoad: `textureLoad(tex_2d, vec2i(0,0), 0)`, + textureNumLayers: `textureNumLayers(tex_array_2d)`, + textureNumLevels: `textureNumLevels(tex_2d)`, + textureNumSamples: `textureNumSamples(tex_multi_2d)`, + textureSample: `textureSample(tex_2d, s, vec2f(0,0))`, + textureSampleBias: `textureSampleBias(tex_2d, s, vec2f(0,0), 0)`, + textureSampleCompare: `textureSampleCompare(tex_depth_2d, s_comp, vec2f(0,0), 0)`, + textureSampleCompareLevel: `textureSampleCompareLevel(tex_depth_2d, s_comp, vec2f(0,0), 0)`, + textureSampleGrad: `textureSampleGrad(tex_2d, s, vec2f(0,0), vec2f(0,0), vec2f(0,0))`, + textureSampleLevel: `textureSampleLevel(tex_2d, s, vec2f(0,0), 0)`, + textureSampleBaseClampToEdge: `textureSampleBaseClampToEdge(tex_2d, s, vec2f(0,0))`, + // Data Packing + pack4x8snorm: `pack4x8snorm(vec4f())`, + pack4x8unorm: `pack4x8unorm(vec4f())`, + pack2x16snorm: `pack2x16snorm(vec2f())`, + pack2x16unorm: `pack2x16unorm(vec2f())`, + pack2x16float: `pack2x16float(vec2f())`, + // Data Unpacking + unpack4x8snorm: `unpack4x8snorm(0)`, + unpack4x8unorm: `unpack4x8unorm(0)`, + unpack2x16snorm: `unpack2x16snorm(0)`, + unpack2x16unorm: `unpack2x16unorm(0)`, + unpack2x16float: `unpack2x16float(0)`, + // Synchronization + workgroupUniformLoad: `workgroupUniformLoad(&wg_var)`, +}; + +g.test('builtin_must_use') + .desc(`Validate must_use built-in functions`) + .params(u => u.combine('call', keysOf(kMustUseBuiltinCalls)).combine('use', [true, false])) + .fn(t => { + let call = kMustUseBuiltinCalls[t.params.call]; + if (t.params.use) { + call = `_ = ${call}`; + } + const code = ` +struct S { + x : u32 +} + +@group(0) @binding(0) +var storage_var : array; +@group(0) @binding(1) +var tex_2d : texture_2d; +@group(0) @binding(2) +var s : sampler; +@group(0) @binding(3) +var tex_depth_2d : texture_depth_2d; +@group(0) @binding(4) +var s_comp : sampler_comparison; +@group(0) @binding(5) +var tex_storage_2d : texture_storage_2d; +@group(0) @binding(6) +var tex_multi_2d : texture_multisampled_2d; +@group(0) @binding(7) +var tex_array_2d : texture_2d_array; + +var wg_var : u32; + +fn foo() { + ${call}; +}`; + + t.expectCompileResult(t.params.use, code); + }); + +const kNoMustUseBuiltinCalls = { + atomicLoad: `atomicLoad(&a)`, + atomicAdd: `atomicAdd(&a, 0)`, + atomicSub: `atomicSub(&a, 0)`, + atomicMax: `atomicMax(&a, 0)`, + atomicMin: `atomicMin(&a, 0)`, + atomicAnd: `atomicAnd(&a, 0)`, + atomicOr: `atomicOr(&a, 0)`, + atomicXor: `atomicXor(&a, 0)`, + atomicExchange: `atomicExchange(&a, 0)`, + atomicCompareExchangeWeak: `atomicCompareExchangeWeak(&a, 0, 0)`, +}; + +g.test('builtin_no_must_use') + .desc(`Validate built-in functions without must_use`) + .params(u => u.combine('call', keysOf(kNoMustUseBuiltinCalls)).combine('use', [true, false])) + .fn(t => { + let call = kNoMustUseBuiltinCalls[t.params.call]; + if (t.params.use) { + call = `_ = ${call}`; + } + const code = ` +var a : atomic; + +fn foo() { + ${call}; +}`; + + t.expectCompileResult(true, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/var_and_let.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/var_and_let.spec.js index 974af4d02a1..93a11517100 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/var_and_let.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/parse/var_and_let.spec.js @@ -71,3 +71,37 @@ g.test('initializer_type') const expectation = lhsType === rhsType; t.expectCompileResult(expectation, code); }); + +g.test('var_access_mode_bad_other_template_contents') + .desc( + 'A variable declaration with explicit access mode with varying other template list contents' + ) + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#var-decls') + .params(u => + u + .combine('accessMode', ['read', 'read_write']) + .combine('prefix', ['storage,', '', ',']) + .combine('suffix', [',storage', ',read', ',', '']) + ) + .fn(t => { + const prog = `@group(0) @binding(0) + var<${t.params.prefix}${t.params.accessMode}${t.params.suffix}> x: i32;`; + const ok = t.params.prefix === 'storage,' && t.params.suffix === ''; + t.expectCompileResult(ok, prog); + }); + +g.test('var_access_mode_bad_template_delim') + .desc('A variable declaration has explicit access mode with varying template list delimiters') + .specURL('https://gpuweb.github.io/gpuweb/wgsl/#var-decls') + .params(u => + u + .combine('accessMode', ['read', 'read_write']) + .combine('prefix', ['', '<', '>', ',']) + .combine('suffix', ['', '<', '>', ',']) + ) + .fn(t => { + const prog = `@group(0) @binding(0) + var ${t.params.prefix}storage,${t.params.accessMode}${t.params.suffix} x: i32;`; + const ok = t.params.prefix === '<' && t.params.suffix === '>'; + t.expectCompileResult(ok, prog); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/util.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/util.js deleted file mode 100644 index 6c16a1ff047..00000000000 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/util.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ - -/** Helper function for emitting a resource declaration's group and binding attributes */ -function groupAndBinding(group, binding) { - return ( - `${group !== undefined ? `@group(${group})` : '/* no group */'} ` + - `${binding !== undefined ? `@binding(${binding})` : '/* no binding */'}` - ); -} - -/** Helper function for emitting a resource declaration for the given type */ -function basicEmitter(type) { - return (name, group, binding) => `${groupAndBinding(group, binding)} var ${name} : ${type};\n`; -} - -/** Map of resource declaration name, to an emitter. */ -export const kResourceEmitters = new Map([ - ['texture_1d', basicEmitter('texture_1d')], - ['texture_2d', basicEmitter('texture_2d')], - ['texture_2d_array', basicEmitter('texture_2d_array')], - ['texture_3d', basicEmitter('texture_3d')], - ['texture_cube', basicEmitter('texture_cube')], - ['texture_cube_array', basicEmitter('texture_cube_array')], - ['texture_multisampled_2d', basicEmitter('texture_multisampled_2d')], - ['texture_external', basicEmitter('texture_external')], - ['texture_storage_1d', basicEmitter('texture_storage_1d')], - ['texture_storage_2d', basicEmitter('texture_storage_2d')], - ['texture_storage_2d_array', basicEmitter('texture_storage_2d_array')], - ['texture_storage_3d', basicEmitter('texture_storage_3d')], - ['texture_depth_2d', basicEmitter('texture_depth_2d')], - ['texture_depth_2d_array', basicEmitter('texture_depth_2d_array')], - ['texture_depth_cube', basicEmitter('texture_depth_cube')], - ['texture_depth_cube_array', basicEmitter('texture_depth_cube_array')], - ['texture_depth_multisampled_2d', basicEmitter('texture_depth_multisampled_2d')], - ['sampler', basicEmitter('sampler')], - ['sampler_comparison', basicEmitter('sampler_comparison')], - [ - 'uniform', - (name, group, binding) => - `${groupAndBinding(group, binding)} var ${name} : array, 16>;\n`, - ], - - [ - 'storage', - (name, group, binding) => - `${groupAndBinding(group, binding)} var ${name} : array, 16>;\n`, - ], -]); - -/** A small selection of resource declaration names, which can be used in test permutations */ -export const kResourceKindsA = ['storage', 'texture_2d', 'texture_external', 'uniform']; - -/** A small selection of resource declaration names, which can be used in test permutations */ -export const kResourceKindsB = ['texture_3d', 'texture_storage_1d', 'uniform']; - -/** An enumerator of shader stages */ - -/** - * declareEntrypoint emits the WGSL to declare an entry point with the given name, stage and body. - * The generated function will have an appropriate return type and return statement, so that @p body - * does not have to change between stage. - * @param name the entry point function name - * @param stage the entry point stage - * @param body the body of the function (excluding any automatically suffixed return statements) - * @returns the WGSL string for the entry point - */ -export function declareEntrypoint(name, stage, body) { - switch (stage) { - case 'vertex': - return `@vertex -fn ${name}() -> @builtin(position) vec4f { - ${body} - return vec4f(); -}`; - case 'fragment': - return `@fragment -fn ${name}() { - ${body} -}`; - case 'compute': - return `@compute @workgroup_size(1) -fn ${name}() { - ${body} -}`; - } -} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/binding.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/binding.spec.js new file mode 100644 index 00000000000..d75aa1ccaa2 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/binding.spec.js @@ -0,0 +1,141 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for binding`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kTests = { + const_expr: { + src: `const z = 5; + const y = 2; + @binding(z + y)`, + pass: true, + }, + override_expr: { + src: `override z = 5; + @binding(z)`, + pass: false, + }, + + zero: { + src: `@binding(0)`, + pass: true, + }, + one: { + src: `@binding(1)`, + pass: true, + }, + comment: { + src: `@/* comment */binding(1)`, + pass: true, + }, + split_line: { + src: '@ \n binding(1)', + pass: true, + }, + trailing_comma: { + src: `@binding(1,)`, + pass: true, + }, + int_literal: { + src: `@binding(1i)`, + pass: true, + }, + uint_literal: { + src: `@binding(1u)`, + pass: true, + }, + hex_literal: { + src: `@binding(0x1)`, + pass: true, + }, + + negative: { + src: `@binding(-1)`, + pass: false, + }, + missing_value: { + src: `@binding()`, + pass: false, + }, + missing_left_paren: { + src: `@binding 1)`, + pass: false, + }, + missing_right_paren: { + src: `@binding(1`, + pass: false, + }, + multiple_values: { + src: `@binding(1,2)`, + pass: false, + }, + f32_val_literal: { + src: `@binding(1.0)`, + pass: false, + }, + f32_val: { + src: `@binding(1f)`, + pass: false, + }, + no_params: { + src: `@binding`, + pass: false, + }, + misspelling: { + src: `@abinding(1)`, + pass: false, + }, + multi_binding: { + src: `@binding(1) @binding(1)`, + pass: false, + }, +}; +g.test('binding') + .desc(`Test validation of binding`) + .params(u => u.combine('attr', keysOf(kTests))) + .fn(t => { + const code = ` +${kTests[t.params.attr].src} @group(1) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(kTests[t.params.attr].pass, code); + }); + +g.test('binding_f16') + .desc(`Test validation of binding with f16`) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const code = ` +@group(1) @binding(1h) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(false, code); + }); + +g.test('binding_without_group') + .desc(`Test validation of binding without group`) + .fn(t => { + const code = ` +@binding(1) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(false, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group.spec.js new file mode 100644 index 00000000000..4737f00f593 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group.spec.js @@ -0,0 +1,141 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for group`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kTests = { + const_expr: { + src: `const z = 5; + const y = 2; + @group(z + y)`, + pass: true, + }, + override_expr: { + src: `override z = 5; + @group(z)`, + pass: false, + }, + + zero: { + src: `@group(0)`, + pass: true, + }, + one: { + src: `@group(1)`, + pass: true, + }, + comment: { + src: `@/* comment */group(1)`, + pass: true, + }, + split_line: { + src: '@ \n group(1)', + pass: true, + }, + trailing_comma: { + src: `@group(1,)`, + pass: true, + }, + int_literal: { + src: `@group(1i)`, + pass: true, + }, + uint_literal: { + src: `@group(1u)`, + pass: true, + }, + hex_literal: { + src: `@group(0x1)`, + pass: true, + }, + + negative: { + src: `@group(-1)`, + pass: false, + }, + missing_value: { + src: `@group()`, + pass: false, + }, + missing_left_paren: { + src: `@group 1)`, + pass: false, + }, + missing_right_paren: { + src: `@group(1`, + pass: false, + }, + multiple_values: { + src: `@group(1,2)`, + pass: false, + }, + f32_val_literal: { + src: `@group(1.0)`, + pass: false, + }, + f32_val: { + src: `@group(1f)`, + pass: false, + }, + no_params: { + src: `@group`, + pass: false, + }, + misspelling: { + src: `@agroup(1)`, + pass: false, + }, + multi_group: { + src: `@group(1) @group(1)`, + pass: false, + }, +}; +g.test('group') + .desc(`Test validation of group`) + .params(u => u.combine('attr', keysOf(kTests))) + .fn(t => { + const code = ` +${kTests[t.params.attr].src} @binding(1) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(kTests[t.params.attr].pass, code); + }); + +g.test('group_f16') + .desc(`Test validation of group with f16`) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const code = ` +@group(1h) @binding(1) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(false, code); + }); + +g.test('group_without_binding') + .desc(`Test validation of group without binding`) + .fn(t => { + const code = ` +@group(1) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(false, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/bindings.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group_and_binding.spec.js similarity index 69% rename from tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/bindings.spec.js rename to tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group_and_binding.spec.js index 546a0b0ce81..615187ed248 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/resource_interface/bindings.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/group_and_binding.spec.js @@ -1,13 +1,92 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ export const description = `Validation tests for resource interface bindings`; + **/ export const description = `Validation tests for group and binding`; import { makeTestGroup } from '../../../../common/framework/test_group.js'; import { ShaderValidationTest } from '../shader_validation_test.js'; -import { declareEntrypoint, kResourceEmitters, kResourceKindsA, kResourceKindsB } from './util.js'; +import { + declareEntrypoint, + kResourceEmitters, + kResourceKindsA, + kResourceKindsAll, + kResourceKindsB, +} from './util.js'; export const g = makeTestGroup(ShaderValidationTest); +g.test('binding_attributes') + .desc(`Test that both @group and @binding attributes must both be declared.`) + .params(u => + u + .combine('stage', ['vertex', 'fragment', 'compute']) + .combine('has_group', [true, false]) + .combine('has_binding', [true, false]) + .combine('resource', kResourceKindsAll) + .beginSubcases() + ) + .fn(t => { + const emitter = kResourceEmitters.get(t.params.resource); + //const emitter = kResourceEmitters.get('uniform') as ResourceDeclarationEmitter; + const code = emitter( + 'R', + t.params.has_group ? 0 : undefined, + t.params.has_binding ? 0 : undefined + ); + + const expect = t.params.has_group && t.params.has_binding; + t.expectCompileResult(expect, code); + }); + +g.test('private_module_scope') + .desc(`Test validation of group and binding on private resources`) + .fn(t => { + const code = ` +@group(1) @binding(1) +var a: i32; + +@workgroup_size(1, 1, 1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(false, code); + }); + +g.test('private_function_scope') + .desc(`Test validation of group and binding on function-scope private resources`) + .fn(t => { + const code = ` +@workgroup_size(1, 1, 1) +@compute fn main() { + @group(1) @binding(1) + var a: i32; +}`; + t.expectCompileResult(false, code); + }); + +g.test('function_scope') + .desc(`Test validation of group and binding on function-scope private resources`) + .fn(t => { + const code = ` +@workgroup_size(1, 1, 1) +@compute fn main() { + @group(1) @binding(1) + var a: i32; +}`; + t.expectCompileResult(false, code); + }); + +g.test('function_scope_texture') + .desc(`Test validation of group and binding on function-scope private resources`) + .fn(t => { + const code = ` +@workgroup_size(1, 1, 1) +@compute fn main() { + @group(1) @binding(1) + var a: texture_2d; +}`; + t.expectCompileResult(false, code); + }); + g.test('single_entry_point') .desc( `Test that two different resource variables in a shader must not have the same group and binding values, when considered as a pair.` @@ -91,24 +170,3 @@ ${declareEntrypoint('main_b', t.params.b_stage, 'use_b();')} t.expectCompileResult(expect, code); } }); - -g.test('binding_attributes') - .desc(`Test that both @group and @binding attributes must both be declared.`) - .params(u => - u - .combine('stage', ['vertex', 'fragment', 'compute']) - .combine('has_group', [true, false]) - .combine('has_binding', [true, false]) - .beginSubcases() - ) - .fn(t => { - const emitter = kResourceEmitters.get('uniform'); - const code = emitter( - 'R', - t.params.has_group ? 0 : undefined, - t.params.has_binding ? 0 : undefined - ); - - const expect = t.params.has_group && t.params.has_binding; - t.expectCompileResult(expect, code); - }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/id.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/id.spec.js new file mode 100644 index 00000000000..4bd1c13d587 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/id.spec.js @@ -0,0 +1,171 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for id`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kTests = { + zero: { + src: `@id(0)`, + pass: true, + }, + one: { + src: `@id(1)`, + pass: true, + }, + hex: { + src: `@id(0x1)`, + pass: true, + }, + trailing_comma: { + src: `@id(1,)`, + pass: true, + }, + i32: { + src: `@id(1i)`, + pass: true, + }, + ui32: { + src: `@id(1u)`, + pass: true, + }, + largest: { + src: `@id(65535)`, + pass: true, + }, + newline: { + src: '@\nid(1)', + pass: true, + }, + comment: { + src: `@/* comment */id(1)`, + pass: true, + }, + const_expr: { + src: `const z = 5; + const y = 2; + @id(z + y)`, + pass: true, + }, + + misspelling: { + src: `@aid(1)`, + pass: false, + }, + empty: { + src: `@id()`, + pass: false, + }, + missing_left_paren: { + src: `@id 1)`, + pass: false, + }, + missing_right_paren: { + src: `@id(1`, + pass: false, + }, + multi_value: { + src: `@id(1, 2)`, + pass: false, + }, + overide_expr: { + src: `override z = 5; + override y = 2; + @id(z + y)`, + pass: false, + }, + f32_literal: { + src: `@id(1.0)`, + pass: false, + }, + f32: { + src: `@id(1f)`, + pass: false, + }, + negative: { + src: `@id(-1)`, + pass: false, + }, + too_large: { + src: `@id(65536)`, + pass: false, + }, + no_params: { + src: `@id`, + pass: false, + }, + duplicate: { + src: `@id(1) @id(1)`, + pass: false, + }, +}; + +g.test('id') + .desc(`Test validation of id`) + .params(u => u.combine('attr', keysOf(kTests))) + .fn(t => { + const code = ` +${kTests[t.params.attr].src} +override a = 4; + +@workgroup_size(1, 1, 1) +@compute fn main() {}`; + t.expectCompileResult(kTests[t.params.attr].pass, code); + }); + +g.test('id_fp16') + .desc(`Test validation of id with fp16`) + .params(u => u.combine('ext', ['', 'h'])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const code = ` +@id(1${t.params.ext}) +override a = 4; + +@workgroup_size(1, 1, 1) +@compute fn main() {}`; + t.expectCompileResult(t.params.ext === '', code); + }); + +g.test('id_struct_member') + .desc(`Test validation of id with struct member`) + .params(u => u.combine('id', ['@id(1) override', '@id(1)', ''])) + .fn(t => { + const code = ` +struct S { + ${t.params.id} a: i32, +} + +@workgroup_size(1, 1, 1) +@compute fn main() {}`; + t.expectCompileResult(t.params.id === '', code); + }); + +g.test('id_non_override') + .desc(`Test validation of id with non-override`) + .params(u => u.combine('type', ['var', 'const', 'override'])) + .fn(t => { + const code = ` +@id(1) ${t.params['type']} a = 4; + +@workgroup_size(1, 1, 1) +@compute fn main() {}`; + t.expectCompileResult(t.params['type'] === 'override', code); + }); + +g.test('id_in_function') + .desc(`Test validation of id inside a function`) + .params(u => u.combine('id', ['@id(1)', ''])) + .fn(t => { + const code = ` +@workgroup_size(1, 1, 1) +@compute fn main() { + ${t.params['id']} var a = 4; +}`; + t.expectCompileResult(t.params['id'] === '', code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js index 28088f9dcf5..413a60c9cad 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js @@ -2,6 +2,7 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = `Validation tests for the interpolate attribute`; import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; import { ShaderValidationTest } from '../shader_validation_test.js'; import { generateShader } from './util.js'; @@ -143,3 +144,75 @@ g.test('duplicate') }); t.expectCompileResult(t.params.attr === '', code); }); + +const kValidationTests = { + valid: { + src: `@interpolate(flat)`, + pass: true, + }, + no_space: { + src: `@interpolate(perspective,center)`, + pass: true, + }, + trailing_comma_one_arg: { + src: `@interpolate(flat,)`, + pass: true, + }, + trailing_comma_two_arg: { + src: `@interpolate(perspective, center,)`, + pass: true, + }, + newline: { + src: '@\ninterpolate(flat)', + pass: true, + }, + comment: { + src: `@/* comment */interpolate(flat)`, + pass: true, + }, + + no_params: { + src: `@interpolate()`, + pass: false, + }, + missing_left_paren: { + src: `@interpolate flat)`, + pass: false, + }, + missing_value_and_left_paren: { + src: `@interpolate)`, + pass: false, + }, + missing_right_paren: { + src: `@interpolate(flat`, + pass: false, + }, + missing_parens: { + src: `@interpolate`, + pass: false, + }, + missing_comma: { + src: `@interpolate(perspective center)`, + pass: false, + }, + numeric: { + src: `@interpolate(1)`, + pass: false, + }, + numeric_second_param: { + src: `@interpolate(perspective, 1)`, + pass: false, + }, +}; + +g.test('interpolation_validation') + .desc(`Test validation of interpolation`) + .params(u => u.combine('attr', keysOf(kValidationTests))) + .fn(t => { + const code = ` +@vertex fn main(${kValidationTests[t.params.attr].src} @location(0) b: f32) -> + @builtin(position) vec4 { + return vec4f(0); +}`; + t.expectCompileResult(kValidationTests[t.params.attr].pass, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js index 1729502082e..cb2e4c5909c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js @@ -2,6 +2,7 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = `Validation tests for the invariant attribute`; import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; import { ShaderValidationTest } from '../shader_validation_test.js'; import { kBuiltins } from './builtins.spec.js'; @@ -9,6 +10,57 @@ import { generateShader } from './util.js'; export const g = makeTestGroup(ShaderValidationTest); +const kTests = { + invariant: { + src: `@invariant`, + pass: true, + }, + comment: { + src: `@/* comment */invariant`, + pass: true, + }, + split_line: { + src: '@\ninvariant', + pass: true, + }, + empty_parens: { + src: `@invariant()`, + pass: false, + }, + value: { + src: `@invariant(0)`, + pass: false, + }, + missing_right_paren: { + src: `@invariant(`, + pass: false, + }, + missing_left_paren: { + src: `@invariant)`, + pass: false, + }, + duplicate: { + src: `@invariant @invariant`, + pass: false, + }, +}; + +g.test('parsing') + .desc(`Test parsing of the invariant attribute`) + .params(u => u.combine('attr', keysOf(kTests))) + .fn(t => { + const code = ` + struct VertexOut { + @builtin(position) ${kTests[t.params.attr].src} position : vec4 + }; + @vertex + fn main() -> VertexOut { + return VertexOut(); + } + `; + t.expectCompileResult(kTests[t.params.attr].pass, code); + }); + g.test('valid_only_with_vertex_position_builtin') .desc(`Test that the invariant attribute is only accepted with the vertex position builtin`) .params(u => u.combineWithParams(kBuiltins).combine('use_struct', [true, false]).beginSubcases()) @@ -41,44 +93,3 @@ g.test('not_valid_on_user_defined_io') `; t.expectCompileResult(!t.params.use_invariant, code); }); - -g.test('invalid_use_of_parameters') - .desc(`Test that no parameters are accepted for the invariant attribute`) - .params(u => u.combine('suffix', ['', '()', '(0)']).beginSubcases()) - .fn(t => { - const code = ` - struct VertexOut { - @builtin(position) @invariant${t.params.suffix} position : vec4 - }; - @vertex - fn main() -> VertexOut { - return VertexOut(); - } - `; - t.expectCompileResult(t.params.suffix === '', code); - }); - -g.test('duplicate') - .desc(`Test that the invariant attribute can only be applied once.`) - .params(u => - u - .combineWithParams(kBuiltins) - .combine('use_struct', [true, false]) - .combine('attr', ['', '@invariant']) - .beginSubcases() - ) - .fn(t => { - if (t.params.name !== 'position') { - t.skip('only valid with position'); - } - - const code = generateShader({ - attribute: `@builtin(${t.params.name}) @invariant ${t.params.attr}`, - type: t.params.type, - stage: t.params.stage, - io: t.params.io, - use_struct: t.params.use_struct, - }); - - t.expectCompileResult(t.params.attr === '', code); - }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js index 5e7a43a4e2a..c40d895ec4c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js @@ -2,6 +2,7 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = `Validation tests for entry point user-defined IO`; import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; import { ShaderValidationTest } from '../shader_validation_test.js'; import { generateShader } from './util.js'; @@ -258,3 +259,125 @@ g.test('duplicates') const expectation = firstIsRet !== secondIsRet; t.expectCompileResult(expectation, code); }); + +const kValidationTests = { + zero: { + src: `@location(0)`, + pass: true, + }, + one: { + src: `@location(1)`, + pass: true, + }, + extra_comma: { + src: `@location(1,)`, + pass: true, + }, + i32: { + src: `@location(1i)`, + pass: true, + }, + u32: { + src: `@location(1u)`, + pass: true, + }, + hex: { + src: `@location(0x1)`, + pass: true, + }, + const_expr: { + src: `@location(a + b)`, + pass: true, + }, + max: { + src: `@location(2147483647)`, + pass: true, + }, + newline: { + src: '@\nlocation(1)', + pass: true, + }, + comment: { + src: `@/* comment */location(1)`, + pass: true, + }, + + misspelling: { + src: `@mlocation(1)`, + pass: false, + }, + no_parens: { + src: `@location`, + pass: false, + }, + empty_params: { + src: `@location()`, + pass: false, + }, + missing_left_paren: { + src: `@location 1)`, + pass: false, + }, + missing_right_paren: { + src: `@location(1`, + pass: false, + }, + extra_params: { + src: `@location(1, 2)`, + pass: false, + }, + f32: { + src: `@location(1f)`, + pass: false, + }, + f32_literal: { + src: `@location(1.0)`, + pass: false, + }, + negative: { + src: `@location(-1)`, + pass: false, + }, + override_expr: { + src: `@location(z + y)`, + pass: false, + }, + vec: { + src: `@location(vec2(1,1))`, + pass: false, + }, +}; +g.test('validation') + .desc(`Test validation of location`) + .params(u => u.combine('attr', keysOf(kValidationTests))) + .fn(t => { + const code = ` +const a = 5; +const b = 6; +override z = 7; +override y = 8; + +@vertex fn main( + ${kValidationTests[t.params.attr].src} res: f32 +) -> @builtin(position) vec4f { + return vec4f(0); +}`; + t.expectCompileResult(kValidationTests[t.params.attr].pass, code); + }); + +g.test('location_fp16') + .desc(`Test validation of location with fp16`) + .params(u => u.combine('ext', ['', 'h'])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const code = ` + +@vertex fn main( + @location(1${t.params.ext}) res: f32 +) -> @builtin(position) vec4f { + return vec4f(); +}`; + t.expectCompileResult(t.params.ext === '', code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/size.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/size.spec.js new file mode 100644 index 00000000000..4a21f6b3b90 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/size.spec.js @@ -0,0 +1,213 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for size`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kSizeTests = { + valid: { + src: `@size(4)`, + pass: true, + }, + non_align_size: { + src: `@size(5)`, + pass: true, + }, + i32: { + src: `@size(4i)`, + pass: true, + }, + u32: { + src: `@size(4u)`, + pass: true, + }, + constant: { + src: `@size(z)`, + pass: true, + }, + trailing_comma: { + src: `@size(4,)`, + pass: true, + }, + hex: { + src: `@size(0x4)`, + pass: true, + }, + whitespace: { + src: '@\nsize(4)', + pass: true, + }, + comment: { + src: `@/* comment */size(4)`, + pass: true, + }, + large: { + src: `@size(2147483647)`, + pass: true, + }, + + misspelling: { + src: `@msize(4)`, + pass: false, + }, + no_value: { + src: `@size()`, + pass: false, + }, + missing_left_paren: { + src: `@size 4)`, + pass: false, + }, + missing_right_paren: { + src: `@size(4`, + pass: false, + }, + missing_parens: { + src: `@size`, + pass: false, + }, + multiple_values: { + src: `@size(4, 8)`, + pass: false, + }, + override: { + src: `@size(over)`, + pass: false, + }, + zero: { + src: `@size(0)`, + pass: false, + }, + negative: { + src: `@size(-4)`, + pass: false, + }, + f32_literal: { + src: `@size(4.0)`, + pass: false, + }, + f32: { + src: `@size(4f)`, + pass: false, + }, + duplicate: { + src: `@size(4) @size(8)`, + pass: false, + }, + too_small: { + src: `@size(1)`, + pass: false, + }, +}; + +g.test('size') + .desc(`Test validation of ize`) + .params(u => u.combine('attr', keysOf(kSizeTests))) + .fn(t => { + const code = ` +override over: i32 = 4; +const z: i32 = 4; + +struct S { + ${kSizeTests[t.params.attr].src} a: f32, +}; +@group(0) @binding(0) +var a: S; + +@workgroup_size(1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(kSizeTests[t.params.attr].pass, code); + }); + +g.test('size_fp16') + .desc(`Test validation of size with fp16`) + .params(u => u.combine('ext', ['', 'h'])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const code = ` +struct S { + @size(4${t.params.ext}) a: f32, +} +@group(0) @binding(0) +var a: S; + +@workgroup_size(1) +@compute fn main() { + _ = a; +}`; + t.expectCompileResult(t.params.ext === '', code); + }); + +const kNonStructTests = { + control: { + mod_src: ``, + func_src: ``, + size: 0, + pass: true, + }, + struct: { + mod_src: `struct S { a: f32 }`, + func_src: ``, + size: 4, + pass: false, + }, + constant: { + mod_src: `const a: f32 = 4.0;`, + func_src: ``, + size: 4, + pass: false, + }, + vec: { + mod_src: ``, + func_src: `vec4`, + size: 16, + pass: false, + }, + mat: { + mod_src: ``, + func_src: `mat4x4`, + size: 64, + pass: false, + }, + array: { + mod_src: ``, + func_src: `array`, + size: 16, + pass: false, + }, + scalar: { + mod_src: ``, + func_src: `f32`, + size: 4, + pass: false, + }, +}; + +g.test('size_non_struct') + .desc(`Test validation of size outside of a struct`) + .params(u => u.combine('attr', keysOf(kNonStructTests))) + .fn(t => { + const data = kNonStructTests[t.params.attr]; + let code = ''; + if (data.mod_src !== '') { + code += `@size(${data.size}) ${data.mod_src}`; + } + + code += ` +@workgroup_size(1) +@compute fn main() { +`; + if (data.func_src !== '') { + code += `@size(${data.size}) var a: ${data.func_src};`; + } + code += '}'; + + t.expectCompileResult(data.pass, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/util.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/util.js index 3092eb81825..8a9e85ae047 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/util.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/util.js @@ -66,3 +66,118 @@ return code; } + +/** + * ResourceDeclarationEmitter is a function that emits the WGSL declaring a resource variable with + * the given group, binding and name. + */ + +/** Helper function for emitting a resource declaration's group and binding attributes */ +function groupAndBinding(group, binding) { + return ( + `${group !== undefined ? `@group(${group})` : '/* no group */'} ` + + `${binding !== undefined ? `@binding(${binding})` : '/* no binding */'}` + ); +} + +/** Helper function for emitting a resource declaration for the given type */ +function basicEmitter(type) { + return (name, group, binding) => `${groupAndBinding(group, binding)} var ${name} : ${type};\n`; +} + +/** Map of resource declaration name, to an emitter. */ +export const kResourceEmitters = new Map([ + ['texture_1d', basicEmitter('texture_1d')], + ['texture_2d', basicEmitter('texture_2d')], + ['texture_2d_array', basicEmitter('texture_2d_array')], + ['texture_3d', basicEmitter('texture_3d')], + ['texture_cube', basicEmitter('texture_cube')], + ['texture_cube_array', basicEmitter('texture_cube_array')], + ['texture_multisampled_2d', basicEmitter('texture_multisampled_2d')], + ['texture_external', basicEmitter('texture_external')], + ['texture_storage_1d', basicEmitter('texture_storage_1d')], + ['texture_storage_2d', basicEmitter('texture_storage_2d')], + ['texture_storage_2d_array', basicEmitter('texture_storage_2d_array')], + ['texture_storage_3d', basicEmitter('texture_storage_3d')], + ['texture_depth_2d', basicEmitter('texture_depth_2d')], + ['texture_depth_2d_array', basicEmitter('texture_depth_2d_array')], + ['texture_depth_cube', basicEmitter('texture_depth_cube')], + ['texture_depth_cube_array', basicEmitter('texture_depth_cube_array')], + ['texture_depth_multisampled_2d', basicEmitter('texture_depth_multisampled_2d')], + ['sampler', basicEmitter('sampler')], + ['sampler_comparison', basicEmitter('sampler_comparison')], + [ + 'uniform', + (name, group, binding) => + `${groupAndBinding(group, binding)} var ${name} : array, 16>;\n`, + ], + + [ + 'storage', + (name, group, binding) => + `${groupAndBinding(group, binding)} var ${name} : array, 16>;\n`, + ], +]); + +/** All possible resource types for use as test permutations. */ +export const kResourceKindsAll = [ + 'texture_1d', + 'texture_2d', + 'texture_2d_array', + 'texture_3d', + 'texture_cube', + 'texture_cube_array', + 'texture_multisampled_2d', + 'texture_external', + 'texture_storage_1d', + 'texture_storage_2d', + 'texture_storage_2d_array', + 'texture_storage_3d', + 'texture_depth_2d', + 'texture_depth_2d_array', + 'texture_depth_cube', + 'texture_depth_cube_array', + 'texture_depth_multisampled_2d', + 'sampler', + 'sampler_comparison', + 'uniform', + 'storage', +]; + +/** A small selection of resource declaration names, which can be used in test permutations */ +export const kResourceKindsA = ['storage', 'texture_2d', 'texture_external', 'uniform']; + +/** A small selection of resource declaration names, which can be used in test permutations */ +export const kResourceKindsB = ['texture_3d', 'texture_storage_1d', 'uniform']; + +/** An enumerator of shader stages */ + +/** + * declareEntrypoint emits the WGSL to declare an entry point with the given name, stage and body. + * The generated function will have an appropriate return type and return statement, so that @p body + * does not have to change between stage. + * @param name the entry point function name + * @param stage the entry point stage + * @param body the body of the function (excluding any automatically suffixed return statements) + * @returns the WGSL string for the entry point + */ +export function declareEntrypoint(name, stage, body) { + switch (stage) { + case 'vertex': + return `@vertex +fn ${name}() -> @builtin(position) vec4f { + ${body} + return vec4f(); +}`; + case 'fragment': + return `@fragment +fn ${name}() { + ${body} +}`; + case 'compute': + return `@compute @workgroup_size(1) +fn ${name}() { + ${body} +}`; + } +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/workgroup_size.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/workgroup_size.spec.js new file mode 100644 index 00000000000..f40d3b4428b --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_io/workgroup_size.spec.js @@ -0,0 +1,301 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = `Validation tests for workgroup_size`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kWorkgroupSizeTests = { + x_only_float: { + src: `@workgroup_size(8f)`, + pass: false, + }, + xy_only_float: { + src: `@workgroup_size(8, 8f)`, + pass: false, + }, + xyz_float: { + src: `@workgroup_size(8, 8, 8f)`, + pass: false, + }, + x_only_float_literal: { + src: `@workgroup_size(8.0)`, + pass: false, + }, + xy_only_float_literal: { + src: `@workgroup_size(8, 8.0)`, + pass: false, + }, + xyz_float_literal: { + src: `@workgroup_size(8, 8, 8.0)`, + pass: false, + }, + empty: { + src: `@workgroup_size()`, + pass: false, + }, + empty_x: { + src: `@workgroup_size(, 8)`, + pass: false, + }, + empty_y: { + src: `@workgroup_size(8, , 8)`, + pass: false, + }, + invalid_entry: { + src: `@workgroup_size(let)`, + pass: false, + }, + + x_only_abstract: { + src: `@workgroup_size(8)`, + pass: true, + }, + xy_only_abstract: { + src: `@workgroup_size(8, 8)`, + pass: true, + }, + xyz_abstract: { + src: `@workgroup_size(8, 8, 8)`, + pass: true, + }, + x_only_unsigned: { + src: `@workgroup_size(8u)`, + pass: true, + }, + xy_only_unsigned: { + src: `@workgroup_size(8u, 8u)`, + pass: true, + }, + xyz_unsigned: { + src: `@workgroup_size(8u, 8u, 8u)`, + pass: true, + }, + x_only_signed: { + src: `@workgroup_size(8i)`, + pass: true, + }, + xy_only_signed: { + src: `@workgroup_size(8i, 8i)`, + pass: true, + }, + xyz_signed: { + src: `@workgroup_size(8i, 8i, 8i)`, + pass: true, + }, + x_only_hex: { + src: `@workgroup_size(0x1)`, + pass: true, + }, + xy_only_hex: { + src: `@workgroup_size(0x1, 0x1)`, + pass: true, + }, + xyz_hex: { + src: `@workgroup_size(0x1, 0x1, 0x1)`, + pass: true, + }, + + const_expr: { + src: `const a = 4; + const b = 5; + @workgroup_size(a, b, a + b)`, + pass: true, + }, + + override: { + src: `@id(42) override block_width = 12u; +@workgroup_size(block_width)`, + pass: true, + }, + override_no_default: { + src: `override block_width: i32; +@workgroup_size(block_width)`, + pass: true, + }, + + trailing_comma_x: { + src: `@workgroup_size(8, )`, + pass: true, + }, + trailing_comma_y: { + src: `@workgroup_size(8, 8,)`, + pass: true, + }, + trailing_comma_z: { + src: `@workgroup_size(8, 8, 8,)`, + pass: true, + }, + + override_expr: { + src: `override a = 5; + override b = 6; + @workgroup_size(a, b, a + b)`, + pass: true, + }, + + // Mixed abstract is ok + mixed_abstract_signed: { + src: `@workgroup_size(8, 8i)`, + pass: true, + }, + mixed_abstract_unsigned: { + src: `@workgroup_size(8u, 8)`, + pass: true, + }, + // Mixed signed and unsigned is not + mixed_signed_unsigned: { + src: `@workgroup_size(8i, 8i, 8u)`, + pass: false, + }, + + zero_x: { + src: `@workgroup_size(0)`, + pass: false, + }, + zero_y: { + src: `@workgroup_size(8, 0)`, + pass: false, + }, + zero_z: { + src: `@workgroup_size(8, 8, 0)`, + pass: false, + }, + negative_x: { + src: `@workgroup_size(-8)`, + pass: false, + }, + negative_y: { + src: `@workgroup_size(8, -8)`, + pass: false, + }, + negative_z: { + src: `@workgroup_size(8, 8, -8)`, + pass: false, + }, + + max_values: { + src: `@workgroup_size(256, 256, 64)`, + pass: true, + }, + + missing_left_paren: { + src: `@workgroup_size 1, 2, 3)`, + pass: false, + }, + missing_right_paren: { + src: `@workgroup_size(1, 2, 3`, + pass: false, + }, + misspelling: { + src: `@aworkgroup_size(1)`, + pass: false, + }, + no_params: { + src: `@workgroup_size`, + pass: false, + }, + multi_line: { + src: '@\nworkgroup_size(1)', + pass: true, + }, + comment: { + src: `@/* comment */workgroup_size(1)`, + pass: true, + }, + + mix_ux: { + src: `@workgroup_size(1u, 1i, 1i)`, + pass: false, + }, + mix_uy: { + src: `@workgroup_size(1i, 1u, 1i)`, + pass: false, + }, + mix_uz: { + src: `@workgroup_size(1i, 1i, 1u)`, + pass: false, + }, + + duplicate: { + src: `@workgroup_size(1) +@workgroup_size(2, 2, 2)`, + pass: false, + }, +}; +g.test('workgroup_size') + .desc(`Test validation of workgroup_size`) + .params(u => u.combine('attr', keysOf(kWorkgroupSizeTests))) + .fn(t => { + const code = ` +${kWorkgroupSizeTests[t.params.attr].src} +@compute fn main() {}`; + t.expectCompileResult(kWorkgroupSizeTests[t.params.attr].pass, code); + }); + +g.test('workgroup_size_fragment_shader') + .desc(`Test validation of workgroup_size on a fragment shader`) + .fn(t => { + const code = ` +@workgroup_size(1) +@fragment fn main(@builtin(position) pos: vec4) {}`; + t.expectCompileResult(false, code); + }); + +g.test('workgroup_size_vertex_shader') + .desc(`Test validation of workgroup_size on a vertex shader`) + .fn(t => { + const code = ` +@workgroup_size(1) +@vertex fn main() -> @builtin(position) vec4 {}`; + t.expectCompileResult(false, code); + }); + +g.test('workgroup_size_function') + .desc(`Test validation of workgroup_size on user function`) + .fn(t => { + const code = ` +@workgroup_size(1) +fn my_func() {}`; + t.expectCompileResult(false, code); + }); + +g.test('workgroup_size_const') + .desc(`Test validation of workgroup_size on a const`) + .fn(t => { + const code = ` +@workgroup_size(1) +const a : i32 = 4; + +fn my_func() {}`; + t.expectCompileResult(false, code); + }); + +g.test('workgroup_size_var') + .desc(`Test validation of workgroup_size on a var`) + .fn(t => { + const code = ` +@workgroup_size(1) +@group(1) @binding(1) +var a: i32; + +fn my_func() { + _ = a; +}`; + t.expectCompileResult(false, code); + }); + +g.test('workgroup_size_fp16') + .desc(`Test validation of workgroup_size with fp16`) + .params(u => u.combine('ext', ['', 'h'])) + .beforeAllSubcases(t => { + t.selectDeviceOrSkipTestCase('shader-f16'); + }) + .fn(t => { + const code = ` +@workgroup_size(1${t.params.ext}) +@compute fn main() {}`; + t.expectCompileResult(t.params.ext === '', code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_validation_test.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_validation_test.js index 4014f4f16fb..5736b788fc5 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_validation_test.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/shader_validation_test.js @@ -1,7 +1,9 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts - **/ import { ErrorWithExtra } from '../../../common/util/util.js'; + **/ import { keysOf } from '../../../common/util/data_tables.js'; +import { ErrorWithExtra } from '../../../common/util/util.js'; import { GPUTest } from '../../gpu_test.js'; + /** * Base fixture for WGSL shader validation tests. */ @@ -55,6 +57,97 @@ export class ShaderValidationTest extends GPUTest { }); } + /** + * Add a test expectation for whether a createShaderModule call issues a warning. + * + * @example + * ```ts + * t.expectCompileWarning(true, `wgsl code`); // Expect compile success and any warning message + * t.expectCompileWarning(false, `wgsl code`); // Expect compile success and no warning messages + * ``` + */ + expectCompileWarning(expectWarning, code) { + let shaderModule; + this.expectGPUError( + 'validation', + () => { + shaderModule = this.device.createShaderModule({ code }); + }, + false + ); + + const error = new ErrorWithExtra('', () => ({ shaderModule })); + this.eventualAsyncExpectation(async () => { + const compilationInfo = await shaderModule.getCompilationInfo(); + + // MAINTENANCE_TODO: Pretty-print error messages with source context. + const messagesLog = compilationInfo.messages + .map(m => `${m.lineNum}:${m.linePos}: ${m.type}: ${m.message}`) + .join('\n'); + error.extra.compilationInfo = compilationInfo; + + if (compilationInfo.messages.some(m => m.type === 'warning')) { + if (expectWarning) { + error.message = `No 'warning' message as expected.\n` + messagesLog; + this.rec.debug(error); + } else { + error.message = `Missing expected compilationInfo 'warning' message.\n` + messagesLog; + this.rec.validationFailed(error); + } + } else { + if (expectWarning) { + error.message = `Missing expected 'warning' message.\n` + messagesLog; + this.rec.validationFailed(error); + } else { + error.message = `Found a 'warning' message as expected.\n` + messagesLog; + this.rec.debug(error); + } + } + }); + } + + /** + * Add a test expectation for whether a createComputePipeline call succeeds or not. + */ + expectPipelineResult(args) { + const phonies = []; + + if (args.constants !== undefined) { + phonies.push(...keysOf(args.constants).map(c => `_ = ${c};`)); + } + if (args.reference !== undefined) { + phonies.push(...args.reference.map(c => `_ = ${c};`)); + } + + const code = + args.code + + ` +@compute @workgroup_size(1) +fn main() { + ${phonies.join('\n')} +}`; + + let shaderModule; + this.expectGPUError( + 'validation', + () => { + shaderModule = this.device.createShaderModule({ code }); + }, + false + ); + + this.expectGPUError( + 'validation', + () => { + this.device.createComputePipeline({ + layout: 'auto', + compute: { module: shaderModule, entryPoint: 'main', constants: args.constants }, + }); + }, + !args.expectedResult + ); + } + /** * Wraps the code fragment into an entry point. * diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/alias.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/alias.spec.js new file mode 100644 index 00000000000..d5a6e3f57a7 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/alias.spec.js @@ -0,0 +1,124 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation tests for type aliases +`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('no_direct_recursion') + .desc('Test that direct recursion of type aliases is rejected') + .params(u => u.combine('target', ['i32', 'T'])) + .fn(t => { + const wgsl = `alias T = ${t.params.target};`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion') + .desc('Test that indirect recursion of type aliases is rejected') + .params(u => u.combine('target', ['i32', 'S'])) + .fn(t => { + const wgsl = ` +alias S = T; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_vector_element') + .desc('Test that indirect recursion of type aliases via vector element types is rejected') + .params(u => u.combine('target', ['i32', 'V'])) + .fn(t => { + const wgsl = ` +alias V = vec4; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_matrix_element') + .desc('Test that indirect recursion of type aliases via matrix element types is rejected') + .params(u => u.combine('target', ['f32', 'M'])) + .fn(t => { + const wgsl = ` +alias M = mat4x4; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'f32', wgsl); + }); + +g.test('no_indirect_recursion_via_array_element') + .desc('Test that indirect recursion of type aliases via array element types is rejected') + .params(u => u.combine('target', ['i32', 'A'])) + .fn(t => { + const wgsl = ` +alias A = array; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_array_size') + .desc('Test that indirect recursion of type aliases via array size expressions is rejected') + .params(u => u.combine('target', ['i32', 'A'])) + .fn(t => { + const wgsl = ` +alias A = array; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_atomic') + .desc('Test that indirect recursion of type aliases via atomic types is rejected') + .params(u => u.combine('target', ['i32', 'A'])) + .fn(t => { + const wgsl = ` +alias A = atomic; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_ptr_store_type') + .desc('Test that indirect recursion of type aliases via pointer store types is rejected') + .params(u => u.combine('target', ['i32', 'P'])) + .fn(t => { + const wgsl = ` +alias P = ptr; +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_struct_member') + .desc('Test that indirect recursion of type aliases via struct members is rejected') + .params(u => u.combine('target', ['i32', 'S'])) + .fn(t => { + const wgsl = ` +struct S { + a : T +} +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_struct_attribute') + .desc('Test that indirect recursion of type aliases via struct members is rejected') + .params(u => + u // + .combine('target', ['i32', 'S']) + .combine('attribute', ['align', 'location', 'size']) + ) + .fn(t => { + const wgsl = ` +struct S { + @${t.params.attribute}(T(4)) a : f32 +} +alias T = ${t.params.target}; +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/struct.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/struct.spec.js new file mode 100644 index 00000000000..a4926ed1efd --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/struct.spec.js @@ -0,0 +1,100 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation tests for struct types +`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('no_direct_recursion') + .desc('Test that direct recursion of structures is rejected') + .params(u => u.combine('target', ['i32', 'S'])) + .fn(t => { + const wgsl = ` +struct S { + a : ${t.params.target} +}`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion') + .desc('Test that indirect recursion of structures is rejected') + .params(u => u.combine('target', ['i32', 'S'])) + .fn(t => { + const wgsl = ` +struct S { + a : T +} +struct T { + a : ${t.params.target} +}`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_array_element') + .desc('Test that indirect recursion of structures via array element types is rejected') + .params(u => u.combine('target', ['i32', 'S'])) + .fn(t => { + const wgsl = ` +struct S { + a : array<${t.params.target}, 4> +} +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); + +g.test('no_indirect_recursion_via_array_size') + .desc('Test that indirect recursion of structures via array size expressions is rejected') + .params(u => u.combine('target', ['S1', 'S2'])) + .fn(t => { + const wgsl = ` +struct S1 { + a : i32, +} +struct S2 { + a : i32, + b : array, +} +`; + t.expectCompileResult(t.params.target === 'S1', wgsl); + }); + +g.test('no_indirect_recursion_via_struct_attribute') + .desc('Test that indirect recursion of structures via struct members is rejected') + .params(u => + u // + .combine('target', ['S1', 'S2']) + .combine('attribute', ['align', 'location', 'size']) + ) + .fn(t => { + const wgsl = ` +struct S1 { + a : i32 +} +struct S2 { + @${t.params.attribute}(${t.params.target}(4).a) a : i32 +} +`; + t.expectCompileResult(t.params.target === 'S1', wgsl); + }); + +g.test('no_indirect_recursion_via_struct_member_nested_in_alias') + .desc( + `Test that indirect recursion of structures via struct members is rejected when the member type + is an alias that contains the structure` + ) + .params(u => u.combine('target', ['i32', 'A'])) + .fn(t => { + const wgsl = ` +alias A = array; +struct S1 { + a : ${t.params.target} +} +struct S2 { + a : S1 +} +`; + t.expectCompileResult(t.params.target === 'i32', wgsl); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/vector.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/vector.spec.js new file mode 100644 index 00000000000..74e687aab56 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/types/vector.spec.js @@ -0,0 +1,79 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +Validation tests for vector types +`; +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +const kCases = { + // Valid vector types + vec2_bool: { wgsl: 'alias T = vec2;', ok: true }, + vec3_bool: { wgsl: 'alias T = vec3;', ok: true }, + vec4_bool: { wgsl: 'alias T = vec4;', ok: true }, + vec2_i32: { wgsl: 'alias T = vec2;', ok: true }, + vec3_i32: { wgsl: 'alias T = vec3;', ok: true }, + vec4_i32: { wgsl: 'alias T = vec4;', ok: true }, + vec2_u32: { wgsl: 'alias T = vec2;', ok: true }, + vec3_u32: { wgsl: 'alias T = vec3;', ok: true }, + vec4_u32: { wgsl: 'alias T = vec4;', ok: true }, + vec2_f32: { wgsl: 'alias T = vec2;', ok: true }, + vec3_f32: { wgsl: 'alias T = vec3;', ok: true }, + vec4_f32: { wgsl: 'alias T = vec4;', ok: true }, + vec2_f16: { wgsl: 'enable f16;\nalias T = vec2;', ok: true }, + vec3_f16: { wgsl: 'enable f16;\nalias T = vec3;', ok: true }, + vec4_f16: { wgsl: 'enable f16;\nalias T = vec4;', ok: true }, + + // Pre-declared type aliases + vec2i: { wgsl: 'const c : vec2i = vec2();', ok: true }, + vec3i: { wgsl: 'const c : vec3i = vec3();', ok: true }, + vec4i: { wgsl: 'const c : vec4i = vec4();', ok: true }, + vec2u: { wgsl: 'const c : vec2u = vec2();', ok: true }, + vec3u: { wgsl: 'const c : vec3u = vec3();', ok: true }, + vec4u: { wgsl: 'const c : vec4u = vec4();', ok: true }, + vec2f: { wgsl: 'const c : vec2f = vec2();', ok: true }, + vec3f: { wgsl: 'const c : vec3f = vec3();', ok: true }, + vec4f: { wgsl: 'const c : vec4f = vec4();', ok: true }, + vec2h: { wgsl: 'enable f16;\nconst c : vec2h = vec2();', ok: true }, + vec3h: { wgsl: 'enable f16;\nconst c : vec3h = vec3();', ok: true }, + vec4h: { wgsl: 'enable f16;\nconst c : vec4h = vec4();', ok: true }, + + // pass + trailing_comma: { wgsl: 'alias T = vec3;', ok: true }, + aliased_el_ty: { wgsl: 'alias EL = i32;\nalias T = vec3;', ok: true }, + + // invalid + vec: { wgsl: 'alias T = vec;', ok: false }, + vec_f32: { wgsl: 'alias T = vec;', ok: false }, + vec1_i32: { wgsl: 'alias T = vec1;', ok: false }, + vec5_u32: { wgsl: 'alias T = vec5;', ok: false }, + missing_el_ty: { wgsl: 'alias T = vec3<>;', ok: false }, + missing_t_left: { wgsl: 'alias T = vec3 u32>;', ok: false }, + missing_t_right: { wgsl: 'alias T = vec3>;', ok: false }, + vec_of_runtime_array: { wgsl: 'alias T = vec3>;', ok: false }, + vec_of_struct: { wgsl: 'struct S { i : i32 }\nalias T = vec3;', ok: false }, + vec_of_atomic: { wgsl: 'alias T = vec3>;', ok: false }, + vec_of_matrix: { wgsl: 'alias T = vec3;', ok: false }, + vec_of_vec: { wgsl: 'alias T = vec3;', ok: false }, + no_bool_shortform: { wgsl: 'const c : vec2b = vec2();', ok: false }, +}; + +g.test('vector') + .desc('Tests validation of vector types') + .params( + u => u.combine('case', keysOf(kCases)) // + ) + .beforeAllSubcases(t => { + const c = kCases[t.params.case]; + if (c.wgsl.indexOf('enable f16') >= 0) { + t.selectDeviceOrSkipTestCase('shader-f16'); + } + }) + .fn(t => { + const c = kCases[t.params.case]; + t.expectCompileResult(c.ok, c.wgsl); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js index 1c9742918c1..140cc26d475 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/shader/validation/uniformity/uniformity.spec.js @@ -2,6 +2,7 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = `Validation tests for uniformity analysis`; import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { keysOf } from '../../../../common/util/data_tables.js'; import { unreachable } from '../../../../common/util/util.js'; import { ShaderValidationTest } from '../shader_validation_test.js'; @@ -357,3 +358,2090 @@ fn main(@builtin(${t.params.builtin}) p : ${t.params.type}) { t.expectCompileResult(t.params.uniform, code); }); + +function generatePointerCheck(check) { + if (check === `address`) { + return `let tmp = workgroupUniformLoad(ptr);`; + } else { + // check === `contents` + return `if test_val > 0 { + workgroupBarrier(); + }`; + } +} + +const kPointerCases = { + address_uniform_literal: { + code: `let ptr = &wg_array[0];`, + check: `address`, + uniform: true, + }, + address_uniform_value: { + code: `let ptr = &wg_array[uniform_value];`, + check: `address`, + uniform: true, + }, + address_nonuniform_value: { + code: `let ptr = &wg_array[nonuniform_value];`, + check: `address`, + uniform: false, + }, + address_uniform_chain: { + code: `let p1 = &wg_struct.x; + let p2 = &(*p1)[uniform_value]; + let p3 = &(*p2).x; + let ptr = &(*p3)[uniform_value];`, + check: `address`, + uniform: true, + }, + address_nonuniform_chain1: { + code: `let p1 = &wg_struct.x; + let p2 = &(*p1)[nonuniform_value]; + let p3 = &(*p2).x; + let ptr = &(*p3)[uniform_value];`, + check: `address`, + uniform: false, + }, + address_nonuniform_chain2: { + code: `let p1 = &wg_struct.x; + let p2 = &(*p1)[uniform_value]; + let p3 = &(*p2).x; + let ptr = &(*p3)[nonuniform_value];`, + check: `address`, + uniform: false, + }, + wg_uniform_load_is_uniform: { + code: `let test_val = workgroupUniformLoad(&wg_scalar);`, + check: `contents`, + uniform: true, + }, + contents_scalar_uniform1: { + code: `let ptr = &func_scalar; + let test_val = *ptr;`, + check: `contents`, + uniform: true, + }, + contents_scalar_uniform2: { + code: `func_scalar = nonuniform_value; + let ptr = &func_scalar; + func_scalar = 0; + let test_val = *ptr;`, + check: `contents`, + uniform: true, + }, + contents_scalar_uniform3: { + code: `let ptr = &func_scalar; + func_scalar = nonuniform_value; + func_scalar = uniform_value; + let test_val = *ptr;`, + check: `contents`, + uniform: true, + }, + contents_scalar_nonuniform1: { + code: `func_scalar = nonuniform_value; + let ptr = &func_scalar; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_scalar_nonuniform2: { + code: `let ptr = &func_scalar; + *ptr = nonuniform_value; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_scalar_alias_uniform: { + code: `let p = &func_scalar; + let ptr = p; + let test_val = *ptr;`, + check: `contents`, + uniform: true, + }, + contents_scalar_alias_nonuniform1: { + code: `func_scalar = nonuniform_value; + let p = &func_scalar; + let ptr = p; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_scalar_alias_nonuniform2: { + code: `let p = &func_scalar; + *p = nonuniform_value; + let ptr = p; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_scalar_alias_nonuniform3: { + code: `let p = &func_scalar; + let ptr = p; + *p = nonuniform_value; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_scalar_alias_nonuniform4: { + code: `let p = &func_scalar; + func_scalar = nonuniform_value; + let test_val = *p;`, + check: `contents`, + uniform: false, + }, + contents_scalar_alias_nonuniform5: { + code: `let p = &func_scalar; + *p = nonuniform_value; + let test_val = func_scalar;`, + check: `contents`, + uniform: false, + }, + contents_array_uniform_index: { + code: `let ptr = &func_array[uniform_value]; + let test_val = *ptr;`, + check: `contents`, + uniform: true, + }, + contents_array_nonuniform_index1: { + code: `let ptr = &func_array[nonuniform_value]; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_array_nonuniform_index2: { + code: `let ptr = &func_array[lid.x]; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_array_nonuniform_index3: { + code: `let ptr = &func_array[gid.x]; + let test_val = *ptr;`, + check: `contents`, + uniform: false, + }, + contents_struct_uniform: { + code: `let p1 = &func_struct.x[uniform_value].x[uniform_value].x[uniform_value]; + let test_val = *p1;`, + check: `contents`, + uniform: true, + }, + contents_struct_nonuniform1: { + code: `let p1 = &func_struct.x[nonuniform_value].x[uniform_value].x[uniform_value]; + let test_val = *p1;`, + check: `contents`, + uniform: false, + }, + contents_struct_nonuniform2: { + code: `let p1 = &func_struct.x[uniform_value].x[gid.x].x[uniform_value]; + let test_val = *p1;`, + check: `contents`, + uniform: false, + }, + contents_struct_nonuniform3: { + code: `let p1 = &func_struct.x[uniform_value].x[uniform_value].x[lid.y]; + let test_val = *p1;`, + check: `contents`, + uniform: false, + }, + contents_struct_chain_uniform: { + code: `let p1 = &func_struct.x; + let p2 = &(*p1)[uniform_value]; + let p3 = &(*p2).x; + let p4 = &(*p3)[uniform_value]; + let p5 = &(*p4).x; + let p6 = &(*p5)[uniform_value]; + let test_val = *p6;`, + check: `contents`, + uniform: true, + }, + contents_struct_chain_nonuniform1: { + code: `let p1 = &func_struct.x; + let p2 = &(*p1)[nonuniform_value]; + let p3 = &(*p2).x; + let p4 = &(*p3)[uniform_value]; + let p5 = &(*p4).x; + let p6 = &(*p5)[uniform_value]; + let test_val = *p6;`, + check: `contents`, + uniform: false, + }, + contents_struct_chain_nonuniform2: { + code: `let p1 = &func_struct.x; + let p2 = &(*p1)[uniform_value]; + let p3 = &(*p2).x; + let p4 = &(*p3)[gid.x]; + let p5 = &(*p4).x; + let p6 = &(*p5)[uniform_value]; + let test_val = *p6;`, + check: `contents`, + uniform: false, + }, + contents_struct_chain_nonuniform3: { + code: `let p1 = &func_struct.x; + let p2 = &(*p1)[uniform_value]; + let p3 = &(*p2).x; + let p4 = &(*p3)[uniform_value]; + let p5 = &(*p4).x; + let p6 = &(*p5)[lid.y]; + let test_val = *p6;`, + check: `contents`, + uniform: false, + }, +}; + +g.test('pointers') + .desc(`Test pointer uniformity (contents and addresses)`) + .params(u => u.combine('case', keysOf(kPointerCases)).beginSubcases()) + .fn(t => { + const testcase = kPointerCases[t.params.case]; + const code = ` +var wg_scalar : u32; +var wg_array : array; + +struct Inner { + x : array +} +struct Middle { + x : array +} +struct Outer { + x : array +} +var wg_struct : Outer; + +@group(0) @binding(0) +var uniform_value : u32; +@group(0) @binding(1) +var nonuniform_value : u32; + +@compute @workgroup_size(16, 1, 1) +fn main(@builtin(local_invocation_id) lid : vec3, + @builtin(global_invocation_id) gid : vec3) { + var func_scalar : u32; + var func_array : array; + var func_struct : Outer; + + ${testcase.code} +`; + + const with_check = + code + + ` +${generatePointerCheck(testcase.check)} +}`; + if (!testcase.uniform) { + const without_check = code + `}\n`; + t.expectCompileResult(true, without_check); + } + t.expectCompileResult(testcase.uniform, with_check); + }); + +function expectedUniformity(uniform, init) { + if (uniform === `always`) { + return true; + } else if (uniform === `init`) { + return init === `no_init` || init === `uniform`; + } + + // uniform == `never` (or unknown values) + return false; +} + +const kFuncVarCases = { + no_assign: { + typename: `u32`, + typedecl: ``, + assignment: ``, + cond: `x > 0`, + uniform: `init`, + }, + simple_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `x = uniform_value[0];`, + cond: `x > 0`, + uniform: `always`, + }, + simple_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `x = nonuniform_value[0];`, + cond: `x > 0`, + uniform: `never`, + }, + compound_assign_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `x += uniform_value[0];`, + cond: `x > 0`, + uniform: `init`, + }, + compound_assign_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `x -= nonuniform_value[0];`, + cond: `x > 0`, + uniform: `never`, + }, + unreachable_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + break; + x = uniform_value[0]; + }`, + cond: `x > 0`, + uniform: `init`, + }, + unreachable_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + break; + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `init`, + }, + if_no_else_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = uniform_value[0]; + }`, + cond: `x > 0`, + uniform: `init`, + }, + if_no_else_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + if_no_then_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + } else { + x = uniform_value[0]; + }`, + cond: `x > 0`, + uniform: `init`, + }, + if_no_then_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + } else { + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + if_else_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = uniform_value[0]; + } else { + x = uniform_value[1]; + }`, + cond: `x > 0`, + uniform: `always`, + }, + if_else_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = nonuniform_value[0]; + } else { + x = nonuniform_value[1]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + if_else_split: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = uniform_value[0]; + } else { + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + if_unreachable_else_none: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + } else { + return; + }`, + cond: `x > 0`, + uniform: `init`, + }, + if_unreachable_else_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = uniform_value[0]; + } else { + return; + }`, + cond: `x > 0`, + uniform: `always`, + }, + if_unreachable_else_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = nonuniform_value[0]; + } else { + return; + }`, + cond: `x > 0`, + uniform: `never`, + }, + if_unreachable_then_none: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + return; + }`, + cond: `x > 0`, + uniform: `init`, + }, + if_unreachable_then_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + return; + } else { + x = uniform_value[0]; + }`, + cond: `x > 0`, + uniform: `always`, + }, + if_unreachable_then_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + return; + } else { + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + if_nonescaping_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `if uniform_cond { + x = nonuniform_value[0]; + return; + }`, + cond: `x > 0`, + uniform: `init`, + }, + loop_body_depends_on_continuing_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + continuing { + x = uniform_value[0]; + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `init`, + }, + loop_body_depends_on_continuing_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + continuing { + x = nonuniform_value[0]; + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `never`, + }, + loop_body_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + x = uniform_value[0]; + continuing { + break if uniform_cond; + } + }`, + cond: `x > 0`, + uniform: `always`, + }, + loop_body_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + x = nonuniform_value[0]; + continuing { + break if uniform_cond; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + loop_body_nonuniform_cond: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + // The analysis doesn't recognize the content of the value. + x = uniform_value[0]; + continuing { + break if nonuniform_cond; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + loop_unreachable_continuing: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + break; + continuing { + break if uniform_cond; + } + }`, + cond: `x > 0`, + uniform: `init`, + }, + loop_continuing_from_body_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + x = uniform_value[0]; + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `always`, + }, + loop_continuing_from_body_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + x = nonuniform_value[0]; + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `never`, + }, + loop_continuing_from_body_split1: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if uniform_cond { + x = uniform_value[0]; + } + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `init`, + }, + loop_continuing_from_body_split2: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if uniform_cond { + x = nonuniform_value[0]; + } + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `never`, + }, + loop_continuing_from_body_split3: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if uniform_cond { + x = uniform_value[0]; + } else { + x = uniform_value[1]; + } + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `always`, + }, + loop_continuing_from_body_split4: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if nonuniform_cond { + x = uniform_value[0]; + } else { + x = uniform_value[1]; + } + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `never`, + }, + loop_continuing_from_body_split5: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if nonuniform_cond { + x = uniform_value[0]; + } else { + x = uniform_value[0]; + } + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + // The analysis doesn't recognize that uniform_value[0] is assignment on all paths. + uniform: `never`, + }, + loop_in_loop_with_continue_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + loop { + x = nonuniform_value[0]; + if nonuniform_cond { + break; + } + continue; + } + x = uniform_value[0]; + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `always`, + }, + loop_in_loop_with_continue_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + loop { + x = uniform_value[0]; + if uniform_cond { + break; + } + continue; + } + x = nonuniform_value[0]; + continuing { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + break if uniform_cond; + } + }`, + cond: `true`, // override the standard check + uniform: `never`, + }, + after_loop_with_uniform_break_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if uniform_cond { + x = uniform_value[0]; + break; + } + }`, + cond: `x > 0`, + uniform: `always`, + }, + after_loop_with_uniform_break_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if uniform_cond { + x = nonuniform_value[0]; + break; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + after_loop_with_nonuniform_break: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if nonuniform_cond { + x = uniform_value[0]; + break; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + after_loop_with_uniform_breaks: { + typename: `u32`, + typedecl: ``, + assignment: `loop { + if uniform_cond { + x = uniform_value[0]; + break; + } else { + break; + } + }`, + cond: `x > 0`, + uniform: `init`, + }, + switch_uniform_case: { + typename: `u32`, + typedecl: ``, + assignment: `switch uniform_val { + case 0 { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + } + default { + } + }`, + cond: `true`, // override default check + uniform: `init`, + }, + switch_nonuniform_case: { + typename: `u32`, + typedecl: ``, + assignment: `switch nonuniform_val { + case 0 { + if x > 0 { + let tmp = textureSample(t, s, vec2f(0,0)); + } + } + default { + } + }`, + cond: `true`, // override default check + uniform: `never`, + }, + after_switch_all_uniform: { + typename: `u32`, + typedecl: ``, + assignment: `switch uniform_val { + case 0 { + x = uniform_value[0]; + } + case 1,2 { + x = uniform_value[1]; + } + default { + x = uniform_value[2]; + } + }`, + cond: `x > 0`, + uniform: `always`, + }, + after_switch_some_assign: { + typename: `u32`, + typedecl: ``, + assignment: `switch uniform_val { + case 0 { + x = uniform_value[0]; + } + case 1,2 { + x = uniform_value[1]; + } + default { + } + }`, + cond: `x > 0`, + uniform: `init`, + }, + after_switch_nonuniform: { + typename: `u32`, + typedecl: ``, + assignment: `switch uniform_val { + case 0 { + x = uniform_value[0]; + } + case 1,2 { + x = uniform_value[1]; + } + default { + x = nonuniform_value[0]; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + after_switch_with_break_nonuniform1: { + typename: `u32`, + typedecl: ``, + assignment: `switch uniform_val { + default { + if uniform_cond { + x = uniform_value[0]; + break; + } + x = nonuniform_value[0]; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + after_switch_with_break_nonuniform2: { + typename: `u32`, + typedecl: ``, + assignment: `switch uniform_val { + default { + x = uniform_value[0]; + if uniform_cond { + x = nonuniform_value[0]; + break; + } + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + for_loop_uniform_body: { + typename: `u32`, + typedecl: ``, + assignment: `for (var i = 0; i < 10; i += 1) { + x = uniform_value[0]; + }`, + cond: `x > 0`, + uniform: `init`, + }, + for_loop_nonuniform_body: { + typename: `u32`, + typedecl: ``, + assignment: `for (var i = 0; i < 10; i += 1) { + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + for_loop_uniform_body_no_condition: { + typename: `u32`, + typedecl: ``, + assignment: `for (var i = 0; ; i += 1) { + x = uniform_value[0]; + if uniform_cond { + break; + } + }`, + cond: `x > 0`, + uniform: `always`, + }, + for_loop_nonuniform_body_no_condition: { + typename: `u32`, + typedecl: ``, + assignment: `for (var i = 0; ; i += 1) { + x = nonuniform_value[0]; + if uniform_cond { + break; + } + }`, + cond: `x > 0`, + uniform: `never`, + }, + for_loop_uniform_increment: { + typename: `u32`, + typedecl: ``, + assignment: `for (; uniform_cond; x += uniform_value[0]) { + }`, + cond: `x > 0`, + uniform: `init`, + }, + for_loop_nonuniform_increment: { + typename: `u32`, + typedecl: ``, + assignment: `for (; uniform_cond; x += nonuniform_value[0]) { + }`, + cond: `x > 0`, + uniform: `never`, + }, + for_loop_uniform_init: { + typename: `u32`, + typedecl: ``, + assignment: `for (x = uniform_value[0]; uniform_cond; ) { + }`, + cond: `x > 0`, + uniform: `always`, + }, + for_loop_nonuniform_init: { + typename: `u32`, + typedecl: ``, + assignment: `for (x = nonuniform_value[0]; uniform_cond;) { + }`, + cond: `x > 0`, + uniform: `never`, + }, + while_loop_uniform_body: { + typename: `u32`, + typedecl: ``, + assignment: `while uniform_cond { + x = uniform_value[0]; + }`, + cond: `x > 0`, + uniform: `init`, + }, + while_loop_nonuniform_body: { + typename: `u32`, + typedecl: ``, + assignment: `while uniform_cond { + x = nonuniform_value[0]; + }`, + cond: `x > 0`, + uniform: `never`, + }, + partial_assignment_uniform: { + typename: `block`, + typedecl: `struct block { + x : u32, + y : u32 + }`, + assignment: `x.x = uniform_value[0].x;`, + cond: `x.x > 0`, + uniform: `init`, + }, + partial_assignment_nonuniform: { + typename: `block`, + typedecl: `struct block { + x : u32, + y : u32 + }`, + assignment: `x.x = nonuniform_value[0].x;`, + cond: `x.x > 0`, + uniform: `never`, + }, + partial_assignment_all_members_uniform: { + typename: `block`, + typedecl: `struct block { + x : u32, + y : u32 + }`, + assignment: `x.x = uniform_value[0].x; + x.y = uniform_value[1].y;`, + cond: `x.x > 0`, + uniform: `init`, + }, + partial_assignment_all_members_nonuniform: { + typename: `block`, + typedecl: `struct block { + x : u32, + y : u32 + }`, + assignment: `x.x = nonuniform_value[0].x; + x.y = uniform_value[0].x;`, + cond: `x.x > 0`, + uniform: `never`, + }, + partial_assignment_single_element_struct_uniform: { + typename: `block`, + typedecl: `struct block { + x : u32 + }`, + assignment: `x.x = uniform_value[0].x;`, + cond: `x.x > 0`, + uniform: `init`, + }, + partial_assignment_single_element_struct_nonuniform: { + typename: `block`, + typedecl: `struct block { + x : u32 + }`, + assignment: `x.x = nonuniform_value[0].x;`, + cond: `x.x > 0`, + uniform: `never`, + }, + partial_assignment_single_element_array_uniform: { + typename: `array`, + typedecl: ``, + assignment: `x[0] = uniform_value[0][0];`, + cond: `x[0] > 0`, + uniform: `init`, + }, + partial_assignment_single_element_array_nonuniform: { + typename: `array`, + typedecl: ``, + assignment: `x[0] = nonuniform_value[0][0];`, + cond: `x[0] > 0`, + uniform: `never`, + }, + nested1: { + typename: `block`, + typedecl: `struct block { + x : u32, + y : u32 + }`, + assignment: `for (; uniform_cond; ) { + if uniform_cond { + x = uniform_value[0]; + break; + x.y = nonuniform_value[0].y; + } else { + if uniform_cond { + continue; + } + x = uniform_value[1]; + } + }`, + cond: `x.x > 0`, + uniform: `init`, + }, + nested2: { + typename: `block`, + typedecl: `struct block { + x : u32, + y : u32 + }`, + assignment: `for (; uniform_cond; ) { + if uniform_cond { + x = uniform_value[0]; + break; + x.y = nonuniform_value[0].y; + } else { + if nonuniform_cond { + continue; + } + x = uniform_value[1]; + } + }`, + cond: `x.x > 0`, + uniform: `never`, + }, +}; + +const kVarInit = { + no_init: ``, + uniform: `= uniform_value[3];`, + nonuniform: `= nonuniform_value[3];`, +}; + +g.test('function_variables') + .desc(`Test uniformity of function variables`) + .params(u => u.combine('case', keysOf(kFuncVarCases)).combine('init', keysOf(kVarInit))) + .fn(t => { + const func_case = kFuncVarCases[t.params.case]; + const code = ` +${func_case.typedecl} + +@group(0) @binding(0) +var uniform_value : array<${func_case.typename}, 4>; +@group(0) @binding(1) +var nonuniform_value : array<${func_case.typename}, 4>; + +@group(1) @binding(0) +var t : texture_2d; +@group(1) @binding(1) +var s : sampler; + +var nonuniform_cond : bool = true; +const uniform_cond : bool = true; +var nonuniform_val : u32 = 0; +const uniform_val : u32 = 0; + +@fragment +fn main() { + var x : ${func_case.typename} ${kVarInit[t.params.init]}; + + ${func_case.assignment} + + if ${func_case.cond} { + let tmp = textureSample(t, s, vec2f(0,0)); + } +} +`; + + const result = expectedUniformity(func_case.uniform, t.params.init); + if (!result) { + t.expectCompileResult(true, `diagnostic(off, derivative_uniformity);\n` + code); + } + t.expectCompileResult(result, code); + }); + +const kShortCircuitExpressionCases = { + or_uniform_uniform: { + code: ` + let x = uniform_cond || uniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: true, + }, + or_uniform_nonuniform: { + code: ` + let x = uniform_cond || nonuniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: false, + }, + or_nonuniform_uniform: { + code: ` + let x = nonuniform_cond || uniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: false, + }, + or_nonuniform_nonuniform: { + code: ` + let x = nonuniform_cond || nonuniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: false, + }, + or_uniform_first_nonuniform: { + code: ` + let x = textureSample(t, s, vec2f(0,0)).x == 0 || nonuniform_cond; + `, + uniform: true, + }, + or_uniform_second_nonuniform: { + code: ` + let x = nonuniform_cond || textureSample(t, s, vec2f(0,0)).x == 0; + `, + uniform: false, + }, + and_uniform_uniform: { + code: ` + let x = uniform_cond && uniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: true, + }, + and_uniform_nonuniform: { + code: ` + let x = uniform_cond && nonuniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: false, + }, + and_nonuniform_uniform: { + code: ` + let x = nonuniform_cond && uniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: false, + }, + and_nonuniform_nonuniform: { + code: ` + let x = nonuniform_cond && nonuniform_cond; + if x { + let tmp = textureSample(t, s, vec2f(0,0)); + } + `, + uniform: false, + }, + and_uniform_first_nonuniform: { + code: ` + let x = textureSample(t, s, vec2f(0,0)).x == 0 && nonuniform_cond; + `, + uniform: true, + }, + and_uniform_second_nonuniform: { + code: ` + let x = nonuniform_cond && textureSample(t, s, vec2f(0,0)).x == 0; + `, + uniform: false, + }, +}; + +const kPointerParamCases = { + pointer_uniform_passthrough_value: { + function: `fn foo(p : ptr) -> u32 { + return *p; + }`, + call: `var x = uniform_values[0]; + let call = foo(&x);`, + cond: `x > 0`, + uniform: true, + }, + pointer_nonuniform_passthrough_value: { + function: `fn foo(p : ptr) -> u32 { + return *p; + }`, + call: `var x = uniform_values[0]; + let call = foo(&x);`, + cond: `x > 0`, + uniform: true, + }, + pointer_store_uniform_value: { + function: `fn foo(p : ptr) { + *p = uniform_values[0]; + }`, + call: `var x = nonuniform_values[0]; + foo(&x);`, + cond: `x > 0`, + uniform: true, + }, + pointer_store_nonuniform_value: { + function: `fn foo(p : ptr) { + *p = nonuniform_values[0]; + }`, + call: `var x = uniform_values[0]; + foo(&x);`, + cond: `x > 0`, + uniform: false, + }, + pointer_depends_on_nonpointer_param_uniform: { + function: `fn foo(p : ptr, x : u32) { + *p = x; + }`, + call: `var x = nonuniform_values[0]; + foo(&x, uniform_values[0]);`, + cond: `x > 0`, + uniform: true, + }, + pointer_depends_on_nonpointer_param_nonuniform: { + function: `fn foo(p : ptr, x : u32) { + *p = x; + }`, + call: `var x = uniform_values[0]; + foo(&x, nonuniform_values[0]);`, + cond: `x > 0`, + uniform: false, + }, + pointer_depends_on_pointer_param_uniform: { + function: `fn foo(p : ptr, q : ptr) { + *p = *q; + }`, + call: `var x = nonuniform_values[0]; + var y = uniform_values[0]; + foo(&x, &y);`, + cond: `x > 0`, + uniform: true, + }, + pointer_depends_on_pointer_param_nonuniform: { + function: `fn foo(p : ptr, q : ptr) { + *p = *q; + }`, + call: `var x = uniform_values[0]; + var y = nonuniform_values[0]; + foo(&x, &y);`, + cond: `x > 0`, + uniform: false, + }, + pointer_codependent1: { + function: `fn foo(p : ptr, q : ptr) { + if *p > 0 { + *p = *q; + } else { + *q++; + } + }`, + call: `var x = uniform_values[0]; + var y = uniform_values[1]; + foo(&x, &y); + let a = x + y;`, + cond: `a > 0`, + uniform: true, + }, + pointer_codependent2: { + function: `fn foo(p : ptr, q : ptr) { + if *p > 0 { + *p = *q; + } else { + *q++; + } + }`, + call: `var x = uniform_values[0]; + var y = nonuniform_values[1]; + foo(&x, &y); + let a = x + y;`, + cond: `a > 0`, + uniform: false, + }, + pointer_codependent3: { + function: `fn foo(p : ptr, q : ptr) { + if *p > 0 { + *p = *q; + } else { + *q++; + } + }`, + call: `var x = nonuniform_values[0]; + var y = uniform_values[1]; + foo(&x, &y); + let a = x + y;`, + cond: `a > 0`, + uniform: false, + }, + pointer_codependent4: { + function: `fn foo(p : ptr, q : ptr) { + if *p > 0 { + *p = *q; + } else { + *q++; + } + }`, + call: `var x = nonuniform_values[0]; + var y = nonuniform_values[1]; + foo(&x, &y); + let a = x + y;`, + cond: `a > 0`, + uniform: false, + }, + uniform_param_uniform_assignment: { + function: `fn foo(p : ptr>, idx : u32) { + (*p)[idx] = uniform_values[0]; + }`, + call: `var x = array(uniform_values[0], uniform_values[1]); + foo(&x, uniform_values[3]);`, + cond: `x[0] > 0`, + uniform: true, + }, + uniform_param_nonuniform_assignment: { + function: `fn foo(p : ptr>, idx : u32) { + (*p)[idx] = nonuniform_values[0]; + }`, + call: `var x = array(uniform_values[0], uniform_values[1]); + foo(&x, uniform_values[3]);`, + cond: `x[0] > 0`, + uniform: false, + }, + nonuniform_param_uniform_assignment: { + function: `fn foo(p : ptr>, idx : u32) { + (*p)[idx] = uniform_values[0]; + }`, + call: `var x = array(uniform_values[0], uniform_values[1]); + foo(&x, u32(clamp(pos.x, 0, 1)));`, + cond: `x[0] > 0`, + uniform: false, + }, + nonuniform_param_nonuniform_assignment: { + function: `fn foo(p : ptr>, idx : u32) { + (*p)[idx] = nonuniform_values[0]; + }`, + call: `var x = array(uniform_values[0], uniform_values[1]); + foo(&x, u32(clamp(pos.x, 0, 1)));`, + cond: `x[0] > 0`, + uniform: false, + }, + required_uniform_success: { + function: `fn foo(p : ptr) { + if *p > 0 { + let tmp = textureSample(t,s,vec2f(0,0)); + } + }`, + call: `var x = uniform_values[0]; + foo(&x);`, + cond: `uniform_cond`, + uniform: true, + }, + required_uniform_failure: { + function: `fn foo(p : ptr) { + if *p > 0 { + let tmp = textureSample(t,s,vec2f(0,0)); + } + }`, + call: `var x = nonuniform_values[0]; + foo(&x);`, + cond: `uniform_cond`, + uniform: false, + }, + uniform_conditional_call_assign_uniform: { + function: `fn foo(p : ptr) { + *p = uniform_values[0]; + }`, + call: `var x = uniform_values[1]; + if uniform_cond { + foo(&x); + }`, + cond: `x > 0`, + uniform: true, + }, + uniform_conditional_call_assign_nonuniform1: { + function: `fn foo(p : ptr) { + *p = nonuniform_values[0]; + }`, + call: `var x = uniform_values[1]; + if uniform_cond { + foo(&x); + }`, + cond: `x > 0`, + uniform: false, + }, + uniform_conditional_call_assign_nonuniform2: { + function: `fn foo(p : ptr) { + *p = uniform_values[0]; + }`, + call: `var x = nonuniform_values[1]; + if uniform_cond { + foo(&x); + }`, + cond: `x > 0`, + uniform: false, + }, + nonuniform_conditional_call_assign_uniform: { + function: `fn foo(p : ptr) { + *p = uniform_values[0]; + }`, + call: `var x = uniform_values[1]; + if nonuniform_cond { + foo(&x); + }`, + cond: `x > 0`, + uniform: false, + }, +}; + +g.test('function_pointer_parameters') + .desc(`Test functions and calls with pointer parameters`) + .params(u => u.combine('case', keysOf(kPointerParamCases))) + .fn(t => { + const pointer_case = kPointerParamCases[t.params.case]; + const code = ` +@group(0) @binding(0) +var t : texture_2d; +@group(0) @binding(1) +var s : sampler; + +const uniform_cond = true; +var nonuniform_cond = true; + +@group(1) @binding(0) +var uniform_values : array; +@group(1) @binding(1) +var nonuniform_values : array; + +${pointer_case.function} + +@fragment +fn main(@builtin(position) pos : vec4f) { + ${pointer_case.call} + + if ${pointer_case.cond} { + let tmp = textureSample(t,s,vec2f(0,0)); + } +} +`; + + const res = pointer_case.uniform; + if (!res) { + t.expectCompileResult(true, `diagnostic(off, derivative_uniformity);\n` + code); + } + t.expectCompileResult(res, code); + }); + +g.test('short_circuit_expressions') + .desc(`Test uniformity of expressions`) + .params(u => u.combine('case', keysOf(kShortCircuitExpressionCases))) + .fn(t => { + const testcase = kShortCircuitExpressionCases[t.params.case]; + const code = ` +@group(1) @binding(0) +var t : texture_2d; +@group(1) @binding(1) +var s : sampler; + +const uniform_cond = true; +var nonuniform_cond = false; + +@fragment +fn main() { + ${testcase.code} +} +`; + + const res = testcase.uniform; + if (!res) { + t.expectCompileResult(true, `diagnostic(off, derivative_uniformity);\n` + code); + } + t.expectCompileResult(res, code); + }); + +const kExpressionCases = { + literal: { + code: `1u`, + uniform: true, + }, + uniform: { + code: `uniform_val`, + uniform: true, + }, + nonuniform: { + code: `nonuniform_val`, + uniform: false, + }, + uniform_index: { + code: `uniform_value[uniform_val]`, + uniform: true, + }, + nonuniform_index1: { + code: `uniform_value[nonuniform_val]`, + uniform: false, + }, + nonuniform_index2: { + code: `nonuniform_value[uniform_val]`, + uniform: false, + }, + uniform_struct: { + code: `uniform_struct.x`, + uniform: true, + }, + nonuniform_struct: { + code: `nonuniform_struct.x`, + uniform: false, + }, +}; + +const kBinOps = { + plus: { + code: '+', + test: '> 0', + }, + minus: { + code: '-', + test: '> 0', + }, + times: { + code: '*', + test: '> 0', + }, + div: { + code: '/', + test: '> 0', + }, + rem: { + code: '%', + test: '> 0', + }, + and: { + code: '&', + test: '> 0', + }, + or: { + code: '|', + test: '> 0', + }, + xor: { + code: '^', + test: '> 0', + }, + shl: { + code: '<<', + test: '> 0', + }, + shr: { + code: '>>', + test: '> 0', + }, + less: { + code: '<', + test: '', + }, + lessequal: { + code: '<=', + test: '', + }, + greater: { + code: '>', + test: '', + }, + greaterequal: { + code: '>=', + test: '', + }, + equal: { + code: '==', + test: '', + }, + notequal: { + code: '!=', + test: '', + }, +}; + +g.test('binary_expressions') + .desc(`Test uniformity of binary expressions`) + .params(u => + u + .combine('e1', keysOf(kExpressionCases)) + .combine('e2', keysOf(kExpressionCases)) + .combine('op', keysOf(kBinOps)) + ) + .fn(t => { + const e1 = kExpressionCases[t.params.e1]; + const e2 = kExpressionCases[t.params.e2]; + const op = kBinOps[t.params.op]; + const code = ` +@group(0) @binding(0) +var t : texture_2d; +@group(0) @binding(1) +var s : sampler; + +struct S { + x : u32 +} + +const uniform_struct = S(1); +var nonuniform_struct = S(1); + +const uniform_value : array = array(1,1); +var nonuniform_value : array = array(1,1); + +const uniform_val : u32 = 1; +var nonuniform_val : u32 = 1; + +@fragment +fn main() { + let tmp = ${e1.code} ${op.code} ${e2.code}; + if tmp ${op.test} { + let res = textureSample(t, s, vec2f(0,0)); + } +} +`; + + const res = e1.uniform && e2.uniform; + if (!res) { + t.expectCompileResult(true, `diagnostic(off, derivative_uniformity);\n` + code); + } + t.expectCompileResult(res, code); + }); + +g.test('unary_expressions') + .desc(`Test uniformity of uniary expressions`) + .params(u => + u + .combine('e', keysOf(kExpressionCases)) + .combine('op', ['!b_tmp', '~i_tmp > 0', '-i32(i_tmp) > 0']) + ) + .fn(t => { + const e = kExpressionCases[t.params.e]; + const code = ` +@group(0) @binding(0) +var t : texture_2d; +@group(0) @binding(1) +var s : sampler; + +struct S { + x : i32 +} + +const uniform_struct = S(1); +var nonuniform_struct = S(1); + +const uniform_value : array = array(1,1); +var nonuniform_value : array = array(1,1); + +const uniform_val : i32 = 1; +var nonuniform_val : i32 = 1; + +@fragment +fn main() { + let i_tmp = ${e.code}; + let b_tmp = bool(i_tmp); + let tmp = ${t.params.op}; + if tmp { + let res = textureSample(t, s, vec2f(0,0)); + } +} +`; + + const res = e.uniform; + if (!res) { + t.expectCompileResult(true, `diagnostic(off, derivative_uniformity);\n` + code); + } + t.expectCompileResult(res, code); + }); + +const kFunctionCases = { + uniform_result: { + function: `fn foo() -> u32 { + return uniform_values[0]; + }`, + call: `let call = foo();`, + cond: `call > 0`, + uniform: true, + }, + nonuniform_result: { + function: `fn foo() -> u32 { + return nonuniform_values[0]; + }`, + call: `let call = foo();`, + cond: `call > 0`, + uniform: false, + }, + nonuniform_return_is_uniform_after_call: { + function: `fn foo() { + if nonuniform_values[0] > 0 { + return; + } else { + return; + } + }`, + call: `foo();`, + cond: `uniform_cond`, + uniform: true, + }, + uniform_passthrough_parameter: { + function: `fn foo(x : u32) -> u32 { + return x; + }`, + call: `let call = foo(uniform_values[0]);`, + cond: `call > 0`, + uniform: true, + }, + nonuniform_passthrough_parameter: { + function: `fn foo(x : u32) -> u32 { + return x; + }`, + call: `let call = foo(nonuniform_values[0]);`, + cond: `call > 0`, + uniform: false, + }, + combined_parameters1: { + function: `fn foo(x : u32, y : u32) -> u32 { + return x + y; + }`, + call: `let call = foo(uniform_values[0], uniform_values[1]);`, + cond: `call > 0`, + uniform: true, + }, + combined_parameters2: { + function: `fn foo(x : u32, y : u32) -> u32 { + return x + y; + }`, + call: `let call = foo(nonuniform_values[0], uniform_values[1]);`, + cond: `call > 0`, + uniform: false, + }, + combined_parameters3: { + function: `fn foo(x : u32, y : u32) -> u32 { + return x + y; + }`, + call: `let call = foo(uniform_values[0], nonuniform_values[1]);`, + cond: `call > 0`, + uniform: false, + }, + combined_parameters4: { + function: `fn foo(x : u32, y : u32) -> u32 { + return x + y; + }`, + call: `let call = foo(nonuniform_values[0], nonuniform_values[1]);`, + cond: `call > 0`, + uniform: false, + }, + uniform_parameter_cf_after_nonuniform_expr: { + function: `fn foo(x : bool, y : vec4f) -> f32 { + return select(0, y.x, x); + }`, + call: `let call = foo(nonuniform_cond || uniform_cond, textureSample(t,s,vec2f(0,0)));`, + cond: `uniform_cond`, + uniform: true, + }, + required_uniform_function_call_in_uniform_cf: { + function: `fn foo() -> vec4f { + return textureSample(t,s,vec2f(0,0)); + }`, + call: `if uniform_cond { + let call = foo(); + }`, + cond: `uniform_cond`, + uniform: true, + }, + required_uniform_function_call_in_nonuniform_cf: { + function: `fn foo() -> vec4f { + return textureSample(t,s,vec2f(0,0)); + }`, + call: `if nonuniform_cond { + let call = foo(); + }`, + cond: `uniform_cond`, + uniform: false, + }, + required_uniform_function_call_in_nonuniform_cf2: { + function: `@diagnostic(warning, derivative_uniformity) + fn foo() -> vec4f { + return textureSample(t,s,vec2f(0,0)); + }`, + call: `if nonuniform_cond { + let call = foo(); + let sample = textureSample(t,s,vec2f(0,0)); + }`, + cond: `uniform_cond`, + uniform: false, + }, + required_uniform_function_call_depends_on_uniform_param: { + function: `fn foo(x : bool) -> vec4f { + if x { + return textureSample(t,s,vec2f(0,0)); + } + return vec4f(0); + }`, + call: `let call = foo(uniform_cond);`, + cond: `uniform_cond`, + uniform: true, + }, + required_uniform_function_call_depends_on_nonuniform_param: { + function: `fn foo(x : bool) -> vec4f { + if x { + return textureSample(t,s,vec2f(0,0)); + } + return vec4f(0); + }`, + call: `let call = foo(nonuniform_cond);`, + cond: `uniform_cond`, + uniform: false, + }, + dpdx_nonuniform_result: { + function: ``, + call: `let call = dpdx(1);`, + cond: `call > 0`, + uniform: false, + }, + dpdy_nonuniform_result: { + function: ``, + call: `let call = dpdy(1);`, + cond: `call > 0`, + uniform: false, + }, + dpdxCoarse_nonuniform_result: { + function: ``, + call: `let call = dpdxCoarse(1);`, + cond: `call > 0`, + uniform: false, + }, + dpdyCoarse_nonuniform_result: { + function: ``, + call: `let call = dpdyCoarse(1);`, + cond: `call > 0`, + uniform: false, + }, + dpdxFine_nonuniform_result: { + function: ``, + call: `let call = dpdxFine(1);`, + cond: `call > 0`, + uniform: false, + }, + dpdyFine_nonuniform_result: { + function: ``, + call: `let call = dpdyFine(1);`, + cond: `call > 0`, + uniform: false, + }, + fwidth_nonuniform_result: { + function: ``, + call: `let call = fwidth(1);`, + cond: `call > 0`, + uniform: false, + }, + fwidthCoarse_nonuniform_result: { + function: ``, + call: `let call = fwidthCoarse(1);`, + cond: `call > 0`, + uniform: false, + }, + fwidthFine_nonuniform_result: { + function: ``, + call: `let call = fwidthFine(1);`, + cond: `call > 0`, + uniform: false, + }, + textureSample_nonuniform_result: { + function: ``, + call: `let call = textureSample(t,s,vec2f(0,0));`, + cond: `call.x > 0`, + uniform: false, + }, + textureSampleBias_nonuniform_result: { + function: ``, + call: `let call = textureSampleBias(t,s,vec2f(0,0), 0);`, + cond: `call.x > 0`, + uniform: false, + }, + textureSampleCompare_nonuniform_result: { + function: ``, + call: `let call = textureSampleCompare(td,sd,vec2f(0,0), 0);`, + cond: `call > 0`, + uniform: false, + }, + textureDimensions_uniform_input_uniform_result: { + function: ``, + call: `let call = textureDimensions(t);`, + cond: `call.x > 0`, + uniform: true, + }, + textureGather_uniform_input_uniform_result: { + function: ``, + call: `let call = textureGather(0,t,s,vec2f(0,0));`, + cond: `call.x > 0`, + uniform: true, + }, + textureGatherCompare_uniform_input_uniform_result: { + function: ``, + call: `let call = textureGatherCompare(td,sd,vec2f(0,0), 0);`, + cond: `call.x > 0`, + uniform: true, + }, + textureLoad_uniform_input_uniform_result: { + function: ``, + call: `let call = textureLoad(t,vec2u(0,0),0);`, + cond: `call.x > 0`, + uniform: true, + }, + textureNumLayers_uniform_input_uniform_result: { + function: ``, + call: `let call = textureNumLayers(ta);`, + cond: `call > 0`, + uniform: true, + }, + textureNumLevels_uniform_input_uniform_result: { + function: ``, + call: `let call = textureNumLevels(t);`, + cond: `call > 0`, + uniform: true, + }, + textureNumSamples_uniform_input_uniform_result: { + function: ``, + call: `let call = textureNumSamples(ts);`, + cond: `call > 0`, + uniform: true, + }, + textureSampleLevel_uniform_input_uniform_result: { + function: ``, + call: `let call = textureSampleLevel(t,s,vec2f(0,0),0);`, + cond: `call.x > 0`, + uniform: true, + }, + textureSampleGrad_uniform_input_uniform_result: { + function: ``, + call: `let call = textureSampleGrad(t,s,vec2f(0,0),vec2f(0,0),vec2f(0,0));`, + cond: `call.x > 0`, + uniform: true, + }, + textureSampleCompareLevel_uniform_input_uniform_result: { + function: ``, + call: `let call = textureSampleCompareLevel(td,sd,vec2f(0,0), 0);`, + cond: `call > 0`, + uniform: true, + }, + textureSampleBaseClampToEdge_uniform_input_uniform_result: { + function: ``, + call: `let call = textureSampleBaseClampToEdge(t,s,vec2f(0,0));`, + cond: `call.x > 0`, + uniform: true, + }, + min_uniform_input_uniform_result: { + function: ``, + call: `let call = min(0,0);`, + cond: `call > 0`, + uniform: true, + }, + value_constructor_uniform_input_uniform_result: { + function: ``, + call: `let call = vec2u(0,0);`, + cond: `call.x > 0`, + uniform: true, + }, +}; + +g.test('functions') + .desc(`Test uniformity of function calls (non-pointer parameters)`) + .params(u => u.combine('case', keysOf(kFunctionCases))) + .fn(t => { + const func_case = kFunctionCases[t.params.case]; + const code = ` +@group(0) @binding(0) +var t : texture_2d; +@group(0) @binding(1) +var s : sampler; +@group(0) @binding(2) +var td : texture_depth_2d; +@group(0) @binding(3) +var sd : sampler_comparison; +@group(0) @binding(4) +var ta : texture_2d_array; +@group(0) @binding(5) +var ts : texture_multisampled_2d; + +const uniform_cond = true; +var nonuniform_cond = true; + +@group(1) @binding(0) +var uniform_values : array; +@group(1) @binding(1) +var nonuniform_values : array; + +${func_case.function} + +@fragment +fn main() { + ${func_case.call} + + if ${func_case.cond} { + let tmp = textureSample(t,s,vec2f(0,0)); + } +} +`; + + const res = func_case.uniform; + if (!res) { + t.expectCompileResult(true, `diagnostic(off, derivative_uniformity);\n` + code); + } + t.expectCompileResult(res, code); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/constants.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/constants.js index 99575c5c85c..da63af2bcae 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/constants.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/constants.js @@ -28,15 +28,20 @@ export const kBit = { min: BigInt(0x0010_0000_0000_0000n), max: BigInt(0x7fef_ffff_ffff_ffffn), zero: BigInt(0x0000_0000_0000_0000n), + subnormal: { + min: BigInt(0x0000_0000_0000_0001n), + max: BigInt(0x000f_ffff_ffff_ffffn), + }, + infinity: BigInt(0x7ff0_0000_0000_0000n), nearest_max: BigInt(0x7fef_ffff_ffff_fffen), less_than_one: BigInt(0x3fef_ffff_ffff_ffffn), pi: { whole: BigInt(0x4009_21fb_5444_2d18n), three_quarters: BigInt(0x4002_d97c_7f33_21d2n), half: BigInt(0x3ff9_21fb_5444_2d18n), - third: BigInt(0x3ff0_c152_382d_7366n), + third: BigInt(0x3ff0_c152_382d_7365n), quarter: BigInt(0x3fe9_21fb_5444_2d18n), - sixth: BigInt(0x3fe0_c152_382d_7366n), + sixth: BigInt(0x3fe0_c152_382d_7365n), }, e: BigInt(0x4005_bf0a_8b14_5769n), }, @@ -44,31 +49,23 @@ export const kBit = { max: BigInt(0x8010_0000_0000_0000n), min: BigInt(0xffef_ffff_ffff_ffffn), zero: BigInt(0x8000_0000_0000_0000n), + subnormal: { + max: BigInt(0x8000_0000_0000_0001n), + min: BigInt(0x800f_ffff_ffff_ffffn), + }, + infinity: BigInt(0xfff0_0000_0000_0000n), nearest_min: BigInt(0xffef_ffff_ffff_fffen), less_than_one: BigInt(0xbfef_ffff_ffff_ffffn), pi: { whole: BigInt(0xc009_21fb_5444_2d18n), three_quarters: BigInt(0xc002_d97c_7f33_21d2n), half: BigInt(0xbff9_21fb_5444_2d18n), - third: BigInt(0xbff0_c152_382d_7366n), + third: BigInt(0xbff0_c152_382d_7365n), quarter: BigInt(0xbfe9_21fb_5444_2d18n), - sixth: BigInt(0xbfe0_c152_382d_7366n), + sixth: BigInt(0xbfe0_c152_382d_7365n), }, }, - subnormal: { - positive: { - min: BigInt(0x0000_0000_0000_0001n), - max: BigInt(0x000f_ffff_ffff_ffffn), - }, - negative: { - max: BigInt(0x8000_0000_0000_0001n), - min: BigInt(0x800f_ffff_ffff_ffffn), - }, - }, - infinity: { - positive: BigInt(0x7ff0_0000_0000_0000n), - negative: BigInt(0xfff0_0000_0000_0000n), - }, + max_ulp: BigInt(0x7ca0_0000_0000_0000n), }, // Limits of f32 @@ -77,6 +74,11 @@ export const kBit = { min: 0x0080_0000, max: 0x7f7f_ffff, zero: 0x0000_0000, + subnormal: { + min: 0x0000_0001, + max: 0x007f_ffff, + }, + infinity: 0x7f80_0000, nearest_max: 0x7f7f_fffe, less_than_one: 0x3f7f_ffff, pi: { @@ -93,6 +95,11 @@ export const kBit = { max: 0x8080_0000, min: 0xff7f_ffff, zero: 0x8000_0000, + subnormal: { + max: 0x8000_0001, + min: 0x807f_ffff, + }, + infinity: 0xff80_0000, nearest_min: 0xff7f_fffe, less_than_one: 0xbf7f_ffff, pi: { @@ -104,20 +111,7 @@ export const kBit = { sixth: 0xbf06_0a92, }, }, - subnormal: { - positive: { - min: 0x0000_0001, - max: 0x007f_ffff, - }, - negative: { - max: 0x8000_0001, - min: 0x807f_ffff, - }, - }, - infinity: { - positive: 0x7f80_0000, - negative: 0xff80_0000, - }, + max_ulp: 0x7380_0000, }, // Limits of f16 @@ -126,6 +120,11 @@ export const kBit = { min: 0x0400, max: 0x7bff, zero: 0x0000, + subnormal: { + min: 0x0001, + max: 0x03ff, + }, + infinity: 0x7c00, nearest_max: 0x7bfe, less_than_one: 0x3bff, pi: { @@ -142,6 +141,11 @@ export const kBit = { max: 0x8400, min: 0xfbff, zero: 0x8000, + subnormal: { + max: 0x8001, + min: 0x83ff, + }, + infinity: 0xfc00, nearest_min: 0xfbfe, less_than_one: 0xbbff, pi: { @@ -153,58 +157,13 @@ export const kBit = { sixth: 0xb830, }, }, - subnormal: { - positive: { - min: 0x0001, - max: 0x03ff, - }, - negative: { - max: 0x8001, - min: 0x83ff, - }, - }, - infinity: { - positive: 0x7c00, - negative: 0xfc00, - }, + max_ulp: 0x5000, }, - // 32-bit representation of power(2, n) n = {-31, ..., 31} - // A uint32 representation as a JS `number` - // {toMinus31, ..., to31} ie. {-31, ..., 31} + // Uint32 representation of power(2, n) n = {0, ..., 31} + // Stored as a JS `number` + // {to0, ..., to31} ie. {0, ..., 31} powTwo: { - toMinus1: 0x3f00_0000, - toMinus2: 0x3e80_0000, - toMinus3: 0x3e00_0000, - toMinus4: 0x3d80_0000, - toMinus5: 0x3d00_0000, - toMinus6: 0x3c80_0000, - toMinus7: 0x3c00_0000, - toMinus8: 0x3b80_0000, - toMinus9: 0x3b00_0000, - toMinus10: 0x3a80_0000, - toMinus11: 0x3a00_0000, - toMinus12: 0x3980_0000, - toMinus13: 0x3900_0000, - toMinus14: 0x3880_0000, - toMinus15: 0x3800_0000, - toMinus16: 0x3780_0000, - toMinus17: 0x3700_0000, - toMinus18: 0x3680_0000, - toMinus19: 0x3600_0000, - toMinus20: 0x3580_0000, - toMinus21: 0x3500_0000, - toMinus22: 0x3480_0000, - toMinus23: 0x3400_0000, - toMinus24: 0x3380_0000, - toMinus25: 0x3300_0000, - toMinus26: 0x3280_0000, - toMinus27: 0x3200_0000, - toMinus28: 0x3180_0000, - toMinus29: 0x3100_0000, - toMinus30: 0x3080_0000, - toMinus31: 0x3000_0000, - to0: 0x0000_0001, to1: 0x0000_0002, to2: 0x0000_0004, @@ -239,42 +198,10 @@ export const kBit = { to31: 0x8000_0000, }, - // 32-bit representation of of -1 * power(2, n) n = {-31, ..., 31} - // An int32 represented as a JS `number` - // {toMinus31, ..., to31} ie. {-31, ..., 31} + // Int32 representation of of -1 * power(2, n) n = {0, ..., 31} + // Stored as a JS `number` + // {to0, ..., to31} ie. {0, ..., 31} negPowTwo: { - toMinus1: 0xbf00_0000, - toMinus2: 0xbe80_0000, - toMinus3: 0xbe00_0000, - toMinus4: 0xbd80_0000, - toMinus5: 0xbd00_0000, - toMinus6: 0xbc80_0000, - toMinus7: 0xbc00_0000, - toMinus8: 0xbb80_0000, - toMinus9: 0xbb00_0000, - toMinus10: 0xba80_0000, - toMinus11: 0xba00_0000, - toMinus12: 0xb980_0000, - toMinus13: 0xb900_0000, - toMinus14: 0xb880_0000, - toMinus15: 0xb800_0000, - toMinus16: 0xb780_0000, - toMinus17: 0xb700_0000, - toMinus18: 0xb680_0000, - toMinus19: 0xb600_0000, - toMinus20: 0xb580_0000, - toMinus21: 0xb500_0000, - toMinus22: 0xb480_0000, - toMinus23: 0xb400_0000, - toMinus24: 0xb380_0000, - toMinus25: 0xb300_0000, - toMinus26: 0xb280_0000, - toMinus27: 0xb200_0000, - toMinus28: 0xb180_0000, - toMinus29: 0xb100_0000, - toMinus30: 0xb080_0000, - toMinus31: 0xb000_0000, - to0: 0xffff_ffff, to1: 0xffff_fffe, to2: 0xffff_fffc, @@ -377,6 +304,12 @@ export const kValue = { positive: { min: reinterpretU64AsF64(kBit.f64.positive.min), max: reinterpretU64AsF64(kBit.f64.positive.max), + zero: reinterpretU64AsF64(kBit.f64.positive.zero), + subnormal: { + min: reinterpretU64AsF64(kBit.f64.positive.subnormal.min), + max: reinterpretU64AsF64(kBit.f64.positive.subnormal.max), + }, + infinity: reinterpretU64AsF64(kBit.f64.positive.infinity), nearest_max: reinterpretU64AsF64(kBit.f64.positive.nearest_max), less_than_one: reinterpretU64AsF64(kBit.f64.positive.less_than_one), pi: { @@ -392,6 +325,12 @@ export const kValue = { negative: { max: reinterpretU64AsF64(kBit.f64.negative.max), min: reinterpretU64AsF64(kBit.f64.negative.min), + zero: reinterpretU64AsF64(kBit.f64.negative.zero), + subnormal: { + max: reinterpretU64AsF64(kBit.f64.negative.subnormal.max), + min: reinterpretU64AsF64(kBit.f64.negative.subnormal.min), + }, + infinity: reinterpretU64AsF64(kBit.f64.negative.infinity), nearest_min: reinterpretU64AsF64(kBit.f64.negative.nearest_min), less_than_one: reinterpretU64AsF64(kBit.f64.negative.less_than_one), // -0.999999940395 pi: { @@ -403,20 +342,7 @@ export const kValue = { sixth: reinterpretU64AsF64(kBit.f64.negative.pi.sixth), }, }, - subnormal: { - positive: { - min: reinterpretU64AsF64(kBit.f64.subnormal.positive.min), - max: reinterpretU64AsF64(kBit.f64.subnormal.positive.max), - }, - negative: { - max: reinterpretU64AsF64(kBit.f64.subnormal.negative.max), - min: reinterpretU64AsF64(kBit.f64.subnormal.negative.min), - }, - }, - infinity: { - positive: reinterpretU64AsF64(kBit.f64.infinity.positive), - negative: reinterpretU64AsF64(kBit.f64.infinity.negative), - }, + max_ulp: reinterpretU64AsF64(kBit.f64.max_ulp), }, // Limits of f32 @@ -424,6 +350,13 @@ export const kValue = { positive: { min: reinterpretU32AsF32(kBit.f32.positive.min), max: reinterpretU32AsF32(kBit.f32.positive.max), + zero: reinterpretU32AsF32(kBit.f32.positive.zero), + subnormal: { + min: reinterpretU32AsF32(kBit.f32.positive.subnormal.min), + max: reinterpretU32AsF32(kBit.f32.positive.subnormal.max), + }, + infinity: reinterpretU32AsF32(kBit.f32.positive.infinity), + nearest_max: reinterpretU32AsF32(kBit.f32.positive.nearest_max), less_than_one: reinterpretU32AsF32(kBit.f32.positive.less_than_one), pi: { @@ -450,6 +383,12 @@ export const kValue = { negative: { max: reinterpretU32AsF32(kBit.f32.negative.max), min: reinterpretU32AsF32(kBit.f32.negative.min), + zero: reinterpretU32AsF32(kBit.f32.negative.zero), + subnormal: { + max: reinterpretU32AsF32(kBit.f32.negative.subnormal.max), + min: reinterpretU32AsF32(kBit.f32.negative.subnormal.min), + }, + infinity: reinterpretU32AsF32(kBit.f32.negative.infinity), nearest_min: reinterpretU32AsF32(kBit.f32.negative.nearest_min), less_than_one: reinterpretU32AsF32(kBit.f32.negative.less_than_one), // -0.999999940395 pi: { @@ -475,20 +414,8 @@ export const kValue = { reinterpretF64AsU64(reinterpretU32AsF32(kBit.f32.positive.max) / 2 + 2 ** 127) - BigInt(1) ), }, - subnormal: { - positive: { - min: reinterpretU32AsF32(kBit.f32.subnormal.positive.min), - max: reinterpretU32AsF32(kBit.f32.subnormal.positive.max), - }, - negative: { - max: reinterpretU32AsF32(kBit.f32.subnormal.negative.max), - min: reinterpretU32AsF32(kBit.f32.subnormal.negative.min), - }, - }, - infinity: { - positive: reinterpretU32AsF32(kBit.f32.infinity.positive), - negative: reinterpretU32AsF32(kBit.f32.infinity.negative), - }, + max_ulp: reinterpretU32AsF32(kBit.f32.max_ulp), + emax: 127, }, // Limits of i16 @@ -515,6 +442,11 @@ export const kValue = { min: reinterpretU16AsF16(kBit.f16.positive.min), max: reinterpretU16AsF16(kBit.f16.positive.max), zero: reinterpretU16AsF16(kBit.f16.positive.zero), + subnormal: { + min: reinterpretU16AsF16(kBit.f16.positive.subnormal.min), + max: reinterpretU16AsF16(kBit.f16.positive.subnormal.max), + }, + infinity: reinterpretU16AsF16(kBit.f16.positive.infinity), nearest_max: reinterpretU16AsF16(kBit.f16.positive.nearest_max), less_than_one: reinterpretU16AsF16(kBit.f16.positive.less_than_one), pi: { @@ -542,6 +474,11 @@ export const kValue = { max: reinterpretU16AsF16(kBit.f16.negative.max), min: reinterpretU16AsF16(kBit.f16.negative.min), zero: reinterpretU16AsF16(kBit.f16.negative.zero), + subnormal: { + max: reinterpretU16AsF16(kBit.f16.negative.subnormal.max), + min: reinterpretU16AsF16(kBit.f16.negative.subnormal.min), + }, + infinity: reinterpretU16AsF16(kBit.f16.negative.infinity), nearest_min: reinterpretU16AsF16(kBit.f16.negative.nearest_min), less_than_one: reinterpretU16AsF16(kBit.f16.negative.less_than_one), // -0.9996 pi: { @@ -567,157 +504,8 @@ export const kValue = { reinterpretF64AsU64(reinterpretU16AsF16(kBit.f16.positive.max) / 2 + 2 ** 15) - BigInt(1) ), }, - subnormal: { - positive: { - min: reinterpretU16AsF16(kBit.f16.subnormal.positive.min), - max: reinterpretU16AsF16(kBit.f16.subnormal.positive.max), - }, - negative: { - max: reinterpretU16AsF16(kBit.f16.subnormal.negative.max), - min: reinterpretU16AsF16(kBit.f16.subnormal.negative.min), - }, - }, - infinity: { - positive: reinterpretU16AsF16(kBit.f16.infinity.positive), - negative: reinterpretU16AsF16(kBit.f16.infinity.negative), - }, - }, - - powTwo: { - to0: Math.pow(2, 0), - to1: Math.pow(2, 1), - to2: Math.pow(2, 2), - to3: Math.pow(2, 3), - to4: Math.pow(2, 4), - to5: Math.pow(2, 5), - to6: Math.pow(2, 6), - to7: Math.pow(2, 7), - to8: Math.pow(2, 8), - to9: Math.pow(2, 9), - to10: Math.pow(2, 10), - to11: Math.pow(2, 11), - to12: Math.pow(2, 12), - to13: Math.pow(2, 13), - to14: Math.pow(2, 14), - to15: Math.pow(2, 15), - to16: Math.pow(2, 16), - to17: Math.pow(2, 17), - to18: Math.pow(2, 18), - to19: Math.pow(2, 19), - to20: Math.pow(2, 20), - to21: Math.pow(2, 21), - to22: Math.pow(2, 22), - to23: Math.pow(2, 23), - to24: Math.pow(2, 24), - to25: Math.pow(2, 25), - to26: Math.pow(2, 26), - to27: Math.pow(2, 27), - to28: Math.pow(2, 28), - to29: Math.pow(2, 29), - to30: Math.pow(2, 30), - to31: Math.pow(2, 31), - to32: Math.pow(2, 32), - - toMinus1: Math.pow(2, -1), - toMinus2: Math.pow(2, -2), - toMinus3: Math.pow(2, -3), - toMinus4: Math.pow(2, -4), - toMinus5: Math.pow(2, -5), - toMinus6: Math.pow(2, -6), - toMinus7: Math.pow(2, -7), - toMinus8: Math.pow(2, -8), - toMinus9: Math.pow(2, -9), - toMinus10: Math.pow(2, -10), - toMinus11: Math.pow(2, -11), - toMinus12: Math.pow(2, -12), - toMinus13: Math.pow(2, -13), - toMinus14: Math.pow(2, -14), - toMinus15: Math.pow(2, -15), - toMinus16: Math.pow(2, -16), - toMinus17: Math.pow(2, -17), - toMinus18: Math.pow(2, -18), - toMinus19: Math.pow(2, -19), - toMinus20: Math.pow(2, -20), - toMinus21: Math.pow(2, -21), - toMinus22: Math.pow(2, -22), - toMinus23: Math.pow(2, -23), - toMinus24: Math.pow(2, -24), - toMinus25: Math.pow(2, -25), - toMinus26: Math.pow(2, -26), - toMinus27: Math.pow(2, -27), - toMinus28: Math.pow(2, -28), - toMinus29: Math.pow(2, -29), - toMinus30: Math.pow(2, -30), - toMinus31: Math.pow(2, -31), - toMinus32: Math.pow(2, -32), - }, - negPowTwo: { - to0: -Math.pow(2, 0), - to1: -Math.pow(2, 1), - to2: -Math.pow(2, 2), - to3: -Math.pow(2, 3), - to4: -Math.pow(2, 4), - to5: -Math.pow(2, 5), - to6: -Math.pow(2, 6), - to7: -Math.pow(2, 7), - to8: -Math.pow(2, 8), - to9: -Math.pow(2, 9), - to10: -Math.pow(2, 10), - to11: -Math.pow(2, 11), - to12: -Math.pow(2, 12), - to13: -Math.pow(2, 13), - to14: -Math.pow(2, 14), - to15: -Math.pow(2, 15), - to16: -Math.pow(2, 16), - to17: -Math.pow(2, 17), - to18: -Math.pow(2, 18), - to19: -Math.pow(2, 19), - to20: -Math.pow(2, 20), - to21: -Math.pow(2, 21), - to22: -Math.pow(2, 22), - to23: -Math.pow(2, 23), - to24: -Math.pow(2, 24), - to25: -Math.pow(2, 25), - to26: -Math.pow(2, 26), - to27: -Math.pow(2, 27), - to28: -Math.pow(2, 28), - to29: -Math.pow(2, 29), - to30: -Math.pow(2, 30), - to31: -Math.pow(2, 31), - to32: -Math.pow(2, 32), - - toMinus1: -Math.pow(2, -1), - toMinus2: -Math.pow(2, -2), - toMinus3: -Math.pow(2, -3), - toMinus4: -Math.pow(2, -4), - toMinus5: -Math.pow(2, -5), - toMinus6: -Math.pow(2, -6), - toMinus7: -Math.pow(2, -7), - toMinus8: -Math.pow(2, -8), - toMinus9: -Math.pow(2, -9), - toMinus10: -Math.pow(2, -10), - toMinus11: -Math.pow(2, -11), - toMinus12: -Math.pow(2, -12), - toMinus13: -Math.pow(2, -13), - toMinus14: -Math.pow(2, -14), - toMinus15: -Math.pow(2, -15), - toMinus16: -Math.pow(2, -16), - toMinus17: -Math.pow(2, -17), - toMinus18: -Math.pow(2, -18), - toMinus19: -Math.pow(2, -19), - toMinus20: -Math.pow(2, -20), - toMinus21: -Math.pow(2, -21), - toMinus22: -Math.pow(2, -22), - toMinus23: -Math.pow(2, -23), - toMinus24: -Math.pow(2, -24), - toMinus25: -Math.pow(2, -25), - toMinus26: -Math.pow(2, -26), - toMinus27: -Math.pow(2, -27), - toMinus28: -Math.pow(2, -28), - toMinus29: -Math.pow(2, -29), - toMinus30: -Math.pow(2, -30), - toMinus31: -Math.pow(2, -31), - toMinus32: -Math.pow(2, -32), + max_ulp: reinterpretU16AsF16(kBit.f16.max_ulp), + emax: 15, }, // Limits of i8 diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/conversion.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/conversion.js index 024807ca0c0..d49cdc1f057 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/conversion.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/conversion.js @@ -12,6 +12,7 @@ import { isFiniteF16, isSubnormalNumberF16, isSubnormalNumberF32, + isSubnormalNumberF64, } from './math.js'; /** @@ -53,6 +54,20 @@ export function normalizedIntegerAsFloat(integer, bits, signed) { } } +/** + * Compares 2 numbers. Returns true if their absolute value is + * less than or equal to maxDiff or if they are both NaN or the + * same sign infinity. + */ +export function numbersApproximatelyEqual(a, b, maxDiff = 0) { + return ( + (Number.isNaN(a) && Number.isNaN(b)) || + (a === Number.POSITIVE_INFINITY && b === Number.POSITIVE_INFINITY) || + (a === Number.NEGATIVE_INFINITY && b === Number.NEGATIVE_INFINITY) || + Math.abs(a - b) <= maxDiff + ); +} + /** * Encodes a JS `number` into an IEEE754 floating point number with the specified number of * sign, exponent, mantissa bits, and exponent bias. @@ -66,14 +81,10 @@ export function normalizedIntegerAsFloat(integer, bits, signed) { export function float32ToFloatBits(n, signBits, exponentBits, mantissaBits, bias) { assert(exponentBits <= 8); assert(mantissaBits <= 23); - assert(Number.isFinite(n)); - if (n === 0) { - return 0; - } - - if (signBits === 0) { - assert(n >= 0); + if (Number.isNaN(n)) { + // NaN = all exponent bits true, 1 or more mantissia bits true + return (((1 << exponentBits) - 1) << mantissaBits) | ((1 << mantissaBits) - 1); } const buf = new DataView(new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT)); @@ -81,11 +92,31 @@ export function float32ToFloatBits(n, signBits, exponentBits, mantissaBits, bias const bits = buf.getUint32(0, true); // bits (32): seeeeeeeefffffffffffffffffffffff - const mantissaBitsToDiscard = 23 - mantissaBits; - // 0 or 1 const sign = (bits >> 31) & signBits; + if (n === 0) { + if (sign === 1) { + // Handle negative zero. + return 1 << (exponentBits + mantissaBits); + } + return 0; + } + + if (signBits === 0) { + assert(n >= 0); + } + + if (!Number.isFinite(n)) { + // Infinity = all exponent bits true, no mantissa bits true + // plus the sign bit. + return ( + (((1 << exponentBits) - 1) << mantissaBits) | (n < 0 ? 2 ** (exponentBits + mantissaBits) : 0) + ); + } + + const mantissaBitsToDiscard = 23 - mantissaBits; + // >> to remove mantissa, & to remove sign, - 127 to remove bias. const exp = ((bits >> 23) & 0xff) - 127; @@ -125,6 +156,8 @@ export function float16BitsToFloat32(float16Bits) { export const kFloat32Format = { signed: 1, exponentBits: 8, mantissaBits: 23, bias: 127 }; /** FloatFormat defining IEEE754 16-bit float. */ export const kFloat16Format = { signed: 1, exponentBits: 5, mantissaBits: 10, bias: 15 }; +/** FloatFormat for 9 bit mantissa, 5 bit exponent unsigned float */ +export const kUFloat9e5Format = { signed: 0, exponentBits: 5, mantissaBits: 9, bias: 15 }; /** * Once-allocated ArrayBuffer/views to avoid overhead of allocation when converting between numeric formats @@ -166,13 +199,43 @@ export function floatBitsToNumber(bits, fmt) { const kNonSignBits = fmt.exponentBits + fmt.mantissaBits; const kNonSignBitsMask = (1 << kNonSignBits) - 1; - const expAndMantBits = bits & kNonSignBitsMask; - let f32BitsWithWrongBias = expAndMantBits << (kFloat32Format.mantissaBits - fmt.mantissaBits); + const exponentAndMantissaBits = bits & kNonSignBitsMask; + const exponentMask = ((1 << fmt.exponentBits) - 1) << fmt.mantissaBits; + const infinityOrNaN = (bits & exponentMask) === exponentMask; + if (infinityOrNaN) { + const mantissaMask = (1 << fmt.mantissaBits) - 1; + const signBit = 2 ** kNonSignBits; + const isNegative = (bits & signBit) !== 0; + return bits & mantissaMask + ? Number.NaN + : isNegative + ? Number.NEGATIVE_INFINITY + : Number.POSITIVE_INFINITY; + } + let f32BitsWithWrongBias = + exponentAndMantissaBits << (kFloat32Format.mantissaBits - fmt.mantissaBits); f32BitsWithWrongBias |= (bits << (31 - kNonSignBits)) & 0x8000_0000; const numberWithWrongBias = float32BitsToNumber(f32BitsWithWrongBias); return numberWithWrongBias * 2 ** (kFloat32Format.bias - fmt.bias); } +/** + * Convert ufloat9e5 bits from rgb9e5ufloat to a JS number + * + * The difference between `floatBitsToNumber` and `ufloatBitsToNumber` + * is that the latter doesn't use an implicit leading bit: + * + * floatBitsToNumber = 2^(exponent - bias) * (1 + mantissa / 2 ^ numMantissaBits) + * ufloatM9E5BitsToNumber = 2^(exponent - bias) * (mantissa / 2 ^ numMantissaBits) + * = 2^(exponent - bias - numMantissaBits) * mantissa + */ +export function ufloatM9E5BitsToNumber(bits, fmt) { + const exponent = bits >> fmt.mantissaBits; + const mantissaMask = (1 << fmt.mantissaBits) - 1; + const mantissa = bits & mantissaMask; + return mantissa * 2 ** (exponent - fmt.bias - fmt.mantissaBits); +} + /** * Encodes a JS `number` into an IEEE754 floating point number with the specified format. * Returns the result as an integer-valued JS `number`. @@ -219,47 +282,49 @@ export function floatBitsToNormalULPFromZero(bits, fmt) { * There is no sign bit, and there is a shared 5-bit biased (15) exponent and a 9-bit * mantissa for each channel. The mantissa does NOT have an implicit leading "1.", * and instead has an implicit leading "0.". + * + * @see https://registry.khronos.org/OpenGL/extensions/EXT/EXT_texture_shared_exponent.txt */ export function packRGB9E5UFloat(r, g, b) { - for (const v of [r, g, b]) { - assert(v >= 0 && v < Math.pow(2, 16)); - } + const N = 9; // number of mantissa bits + const Emax = 31; // max exponent + const B = 15; // exponent bias + const sharedexp_max = (((1 << N) - 1) / (1 << N)) * 2 ** (Emax - B); + const red_c = clamp(r, { min: 0, max: sharedexp_max }); + const green_c = clamp(g, { min: 0, max: sharedexp_max }); + const blue_c = clamp(b, { min: 0, max: sharedexp_max }); + const max_c = Math.max(red_c, green_c, blue_c); + const exp_shared_p = Math.max(-B - 1, Math.floor(Math.log2(max_c))) + 1 + B; + const max_s = Math.floor(max_c / 2 ** (exp_shared_p - B - N) + 0.5); + const exp_shared = max_s === 1 << N ? exp_shared_p + 1 : exp_shared_p; + const scalar = 1 / 2 ** (exp_shared - B - N); + const red_s = Math.floor(red_c * scalar + 0.5); + const green_s = Math.floor(green_c * scalar + 0.5); + const blue_s = Math.floor(blue_c * scalar + 0.5); + assert(red_s >= 0 && red_s <= 0b111111111); + assert(green_s >= 0 && green_s <= 0b111111111); + assert(blue_s >= 0 && blue_s <= 0b111111111); + assert(exp_shared >= 0 && exp_shared <= 0b11111); + return ((exp_shared << 27) | (blue_s << 18) | (green_s << 9) | red_s) >>> 0; +} - const buf = new DataView(new ArrayBuffer(Float32Array.BYTES_PER_ELEMENT)); - const extractMantissaAndExponent = n => { - const mantissaBits = 9; - buf.setFloat32(0, n, true); - const bits = buf.getUint32(0, true); - // >> to remove mantissa, & to remove sign - let biasedExponent = (bits >> 23) & 0xff; - const mantissaBitsToDiscard = 23 - mantissaBits; - let mantissa = (bits & 0x7fffff) >> mantissaBitsToDiscard; - - // RGB9E5UFloat has an implicit leading 0. instead of a leading 1., - // so we need to move the 1. into the mantissa and bump the exponent. - // For float32 encoding, the leading 1 is only present if the biased - // exponent is non-zero. - if (biasedExponent !== 0) { - mantissa = (mantissa >> 1) | 0b100000000; - biasedExponent += 1; - } - return { biasedExponent, mantissa }; +/** + * Decodes a RGB9E5 encoded color. + * @see packRGB9E5UFloat + */ +export function unpackRGB9E5UFloat(encoded) { + const N = 9; // number of mantissa bits + const B = 15; // exponent bias + const red_s = (encoded >>> 0) & 0b111111111; + const green_s = (encoded >>> 9) & 0b111111111; + const blue_s = (encoded >>> 18) & 0b111111111; + const exp_shared = (encoded >>> 27) & 0b11111; + const exp = Math.pow(2, exp_shared - B - N); + return { + R: exp * red_s, + G: exp * green_s, + B: exp * blue_s, }; - - const { biasedExponent: rExp, mantissa: rOrigMantissa } = extractMantissaAndExponent(r); - const { biasedExponent: gExp, mantissa: gOrigMantissa } = extractMantissaAndExponent(g); - const { biasedExponent: bExp, mantissa: bOrigMantissa } = extractMantissaAndExponent(b); - - // Use the largest exponent, and shift the mantissa accordingly - const exp = Math.max(rExp, gExp, bExp); - const rMantissa = rOrigMantissa >> (exp - rExp); - const gMantissa = gOrigMantissa >> (exp - gExp); - const bMantissa = bOrigMantissa >> (exp - bExp); - - const bias = 15; - const biasedExp = exp === 0 ? 0 : exp - 127 + bias; - assert(biasedExp >= 0 && biasedExp <= 31); - return rMantissa | (gMantissa << 9) | (bMantissa << 18) | (biasedExp << 27); } /** @@ -535,6 +600,34 @@ export class ScalarType { get size() { return this._size; } + + /** Constructs a Scalar of this type with @p value */ + create(value) { + switch (this.kind) { + case 'abstract-float': + return abstractFloat(value); + case 'f64': + return f64(value); + case 'f32': + return f32(value); + case 'f16': + return f16(value); + case 'u32': + return u32(value); + case 'u16': + return u16(value); + case 'u8': + return u8(value); + case 'i32': + return i32(value); + case 'i16': + return i16(value); + case 'i8': + return i8(value); + case 'bool': + return bool(value !== 0); + } + } } /** VectorType describes the type of WGSL Vector. */ @@ -567,6 +660,16 @@ export class VectorType { get size() { return this.elementType.size * this.width; } + + /** Constructs a Vector of this type with the given values */ + create(value) { + if (value instanceof Array) { + assert(value.length === this.width); + } else { + value = Array(this.width).fill(value); + } + return new Vector(value.map(v => this.elementType.create(v))); + } } // Maps a string representation of a vector type to vector type. @@ -593,8 +696,10 @@ export class MatrixType { this.cols = cols; this.rows = rows; assert( - elementType.kind === 'f32' || elementType.kind === 'f16', - "MatrixType can only have elementType of 'f32' or 'f16'" + elementType.kind === 'f32' || + elementType.kind === 'f16' || + elementType.kind === 'abstract-float', + "MatrixType can only have elementType of 'f32' or 'f16' or 'abstract-float'" ); this.elementType = elementType; @@ -727,6 +832,20 @@ export function numElementsOf(ty) { throw new Error(`unhandled type ${ty}`); } +/** @returns the scalar elements of the given Value */ +export function elementsOf(value) { + if (value instanceof Scalar) { + return [value]; + } + if (value instanceof Vector) { + return value.elements; + } + if (value instanceof Matrix) { + return value.elements.flat(); + } + throw new Error(`unhandled value ${value}`); +} + /** @returns the scalar (element) type of the given Type */ export function scalarTypeOf(ty) { if (ty instanceof ScalarType) { @@ -761,6 +880,7 @@ export class Scalar { * @param offset the byte offset within buffer */ copyTo(buffer, offset) { + assert(this.type.kind !== 'f64', `Copying f64 values to/from buffers is not defined`); for (let i = 0; i < this.bits.length; i++) { buffer[offset + i] = this.bits[i]; } @@ -815,9 +935,28 @@ export class Scalar { if (n !== null && isFloatValue(this)) { let str = this.value.toString(); str = str.indexOf('.') > 0 || str.indexOf('e') > 0 ? str : `${str}.0`; - return isSubnormalNumberF32(n.valueOf()) - ? `${Colors.bold(str)} (0x${hex} subnormal)` - : `${Colors.bold(str)} (0x${hex})`; + switch (this.type.kind) { + case 'abstract-float': + return isSubnormalNumberF64(n.valueOf()) + ? `${Colors.bold(str)} (0x${hex} subnormal)` + : `${Colors.bold(str)} (0x${hex})`; + case 'f64': + return isSubnormalNumberF64(n.valueOf()) + ? `${Colors.bold(str)} (0x${hex} subnormal)` + : `${Colors.bold(str)} (0x${hex})`; + case 'f32': + return isSubnormalNumberF32(n.valueOf()) + ? `${Colors.bold(str)} (0x${hex} subnormal)` + : `${Colors.bold(str)} (0x${hex})`; + case 'f16': + return isSubnormalNumberF16(n.valueOf()) + ? `${Colors.bold(str)} (0x${hex} subnormal)` + : `${Colors.bold(str)} (0x${hex})`; + default: + unreachable( + `Printing of floating point kind ${this.type.kind} is not implemented...` + ); + } } return `${Colors.bold(this.value.toString())} (0x${hex})`; } @@ -1001,6 +1140,16 @@ export function reinterpretI32AsU32(i32) { return new Uint32Array(array.buffer)[0]; } +/** + * @returns a number representing the f32 interpretation + * of the bits of a number assumed to be an i32 value. + */ +export function reinterpretI32AsF32(i32) { + const array = new Int32Array(1); + array[0] = i32; + return new Float32Array(array.buffer)[0]; +} + /** * @returns a number representing the u16 interpretation * of the bits of a number assumed to be an f16 value. @@ -1286,14 +1435,109 @@ export function deserializeValue(data) { /** @returns if the Value is a float scalar type */ export function isFloatValue(v) { - if (v instanceof Scalar) { - const s = v; + return isFloatType(v.type); +} + +/** + * @returns if @p ty is an abstract numeric type. + * @note this does not consider composite types. + * Use elementType() if you want to test the element type. + */ +export function isAbstractType(ty) { + if (ty instanceof ScalarType) { + return ty.kind === 'abstract-float'; + } + return false; +} + +/** + * @returns if @p ty is a floating point type. + * @note this does not consider composite types. + * Use elementType() if you want to test the element type. + */ +export function isFloatType(ty) { + if (ty instanceof ScalarType) { return ( - s.type.kind === 'abstract-float' || - s.type.kind === 'f64' || - s.type.kind === 'f32' || - s.type.kind === 'f16' + ty.kind === 'abstract-float' || ty.kind === 'f64' || ty.kind === 'f32' || ty.kind === 'f16' ); } return false; } + +/// All floating-point scalar types +export const kAllFloatScalars = [TypeAbstractFloat, TypeF32, TypeF16]; + +/// All floating-point vec2 types +export const kAllFloatVector2 = [ + TypeVec(2, TypeAbstractFloat), + TypeVec(2, TypeF32), + TypeVec(2, TypeF16), +]; + +/// All floating-point vec3 types +export const kAllFloatVector3 = [ + TypeVec(3, TypeAbstractFloat), + TypeVec(3, TypeF32), + TypeVec(3, TypeF16), +]; + +/// All floating-point vec4 types +export const kAllFloatVector4 = [ + TypeVec(4, TypeAbstractFloat), + TypeVec(4, TypeF32), + TypeVec(4, TypeF16), +]; + +/// All floating-point vector types +export const kAllFloatVectors = [...kAllFloatVector2, ...kAllFloatVector3, ...kAllFloatVector4]; + +/// All floating-point scalar and vector types +export const kAllFloatScalarsAndVectors = [...kAllFloatScalars, ...kAllFloatVectors]; + +/// All integer scalar and vector types +export const kAllIntegerScalarsAndVectors = [ + TypeI32, + TypeVec(2, TypeI32), + TypeVec(3, TypeI32), + TypeVec(4, TypeI32), + TypeU32, + TypeVec(2, TypeU32), + TypeVec(3, TypeU32), + TypeVec(4, TypeU32), +]; + +/// All signed integer scalar and vector types +export const kAllSignedIntegerScalarsAndVectors = [ + TypeI32, + TypeVec(2, TypeI32), + TypeVec(3, TypeI32), + TypeVec(4, TypeI32), +]; + +/// All unsigned integer scalar and vector types +export const kAllUnsignedIntegerScalarsAndVectors = [ + TypeU32, + TypeVec(2, TypeU32), + TypeVec(3, TypeU32), + TypeVec(4, TypeU32), +]; + +/// All floating-point and integer scalar and vector types +export const kAllFloatAndIntegerScalarsAndVectors = [ + ...kAllFloatScalarsAndVectors, + ...kAllIntegerScalarsAndVectors, +]; + +/// All floating-point and signed integer scalar and vector types +export const kAllFloatAndSignedIntegerScalarsAndVectors = [ + ...kAllFloatScalarsAndVectors, + ...kAllSignedIntegerScalarsAndVectors, +]; + +/** @returns the inner element type of the given type */ +export function elementType(t) { + if (t instanceof ScalarType) { + return t; + } + return t.elementType; +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/device_pool.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/device_pool.js index 46ca625388d..ab2f6350fc4 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/device_pool.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/device_pool.js @@ -2,14 +2,14 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { SkipTestCase } from '../../common/framework/fixture.js'; import { attemptGarbageCollection } from '../../common/util/collect_garbage.js'; -import { getGPU } from '../../common/util/navigator_gpu.js'; +import { getGPU, getDefaultRequestAdapterOptions } from '../../common/util/navigator_gpu.js'; import { assert, raceWithRejectOnTimeout, assertReject, unreachable, } from '../../common/util/util.js'; -import { kLimitInfo, kLimits } from '../capability_info.js'; +import { getDefaultLimits, kLimits } from '../capability_info.js'; class TestFailedButDeviceReusable extends Error {} class FeaturesNotSupported extends Error {} @@ -202,10 +202,15 @@ function canonicalizeDescriptor(desc) { /** Canonicalized version of the requested limits: in canonical order, with only values which are * specified _and_ non-default. */ const limitsCanonicalized = {}; + // MAINTENANCE_TODO: Remove cast when @webgpu/types includes compatibilityMode + const adapterOptions = getDefaultRequestAdapterOptions(); + + const featureLevel = adapterOptions?.compatibilityMode ? 'compatibility' : 'core'; + const defaultLimits = getDefaultLimits(featureLevel); if (desc.requiredLimits) { for (const limit of kLimits) { const requestedValue = desc.requiredLimits[limit]; - const defaultValue = kLimitInfo[limit].default; + const defaultValue = defaultLimits[limit].default; // Skip adding a limit to limitsCanonicalized if it is the same as the default. if (requestedValue !== undefined && requestedValue !== defaultValue) { limitsCanonicalized[limit] = requestedValue; diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/floating_point.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/floating_point.js index 9bafdfb995b..2cc5159c0aa 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/floating_point.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/floating_point.js @@ -6,9 +6,10 @@ import { Float16Array } from '../../external/petamoriken/float16/float16.js'; import { anyOf } from './compare.js'; import { kValue } from './constants.js'; import { + abstractFloat, f16, f32, - f64, + isFloatType, reinterpretF16AsU16, reinterpretF32AsU32, reinterpretF64AsU32s, @@ -127,36 +128,36 @@ export function serializeFPInterval(i) { const traits = FP[i.kind]; switch (i.kind) { case 'abstract': { - if (i === traits.constants().anyInterval) { - return { kind: 'abstract', any: true }; + if (i === traits.constants().unboundedInterval) { + return { kind: 'abstract', unbounded: true }; } else { return { kind: 'abstract', - any: false, + unbounded: false, begin: reinterpretF64AsU32s(i.begin), end: reinterpretF64AsU32s(i.end), }; } } case 'f32': { - if (i === traits.constants().anyInterval) { - return { kind: 'f32', any: true }; + if (i === traits.constants().unboundedInterval) { + return { kind: 'f32', unbounded: true }; } else { return { kind: 'f32', - any: false, + unbounded: false, begin: reinterpretF32AsU32(i.begin), end: reinterpretF32AsU32(i.end), }; } } case 'f16': { - if (i === traits.constants().anyInterval) { - return { kind: 'f16', any: true }; + if (i === traits.constants().unboundedInterval) { + return { kind: 'f16', unbounded: true }; } else { return { kind: 'f16', - any: false, + unbounded: false, begin: reinterpretF16AsU16(i.begin), end: reinterpretF16AsU16(i.end), }; @@ -171,8 +172,8 @@ export function serializeFPInterval(i) { export function deserializeFPInterval(data) { const kind = data.kind; const traits = FP[kind]; - if (data.any) { - return traits.constants().anyInterval; + if (data.unbounded) { + return traits.constants().unboundedInterval; } switch (kind) { case 'abstract': { @@ -211,7 +212,8 @@ function addFlushedIfNeededF16(values) { * from tests. */ -class FPTraits { +/** Abstract base class for all floating-point traits */ +export class FPTraits { constructor(k) { this.kind = k; } @@ -233,6 +235,28 @@ class FPTraits { return new FPInterval(this.kind, n, n); } + /** + * Makes a param that can be turned into an interval + */ + toParam(n) { + return { + kind: this.kind, + interval: n, + }; + } + + /** + * Converts p into an FPInterval if it is an FPIntervalPAram + */ + fromParam(p) { + const param = p; + if (param.interval && param.kind) { + assert(param.kind === this.kind); + return this.toInterval(param.interval); + } + return p; + } + /** * @returns an interval with the tightest bounds that includes all provided * intervals @@ -383,10 +407,10 @@ class FPTraits { * @param domain interval to restrict inputs to * @param impl operation implementation to run if input is within the required domain * @returns a ScalarToInterval that calls impl if domain contains the input, - * otherwise it returns an any interval */ + * otherwise it returns an unbounded interval */ limitScalarToIntervalDomain(domain, impl) { return n => { - return domain.contains(n) ? impl(n) : this.constants().anyInterval; + return domain.contains(n) ? impl(n) : this.constants().unboundedInterval; }; } @@ -399,11 +423,11 @@ class FPTraits { * @param domain set of intervals to restrict inputs to * @param impl operation implementation to run if input is within the required domain * @returns a ScalarPairToInterval that calls impl if domain contains the input, - * otherwise it returns an any interval */ + * otherwise it returns an unbounded interval */ limitScalarPairToIntervalDomain(domain, impl) { return (x, y) => { if (!domain.x.some(d => d.contains(x)) || !domain.y.some(d => d.contains(y))) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } return impl(x, y); @@ -411,113 +435,123 @@ class FPTraits { } /** Stub for scalar to interval generator */ - unimplementedScalarToInterval(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedScalarToInterval(name, _x) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for scalar pair to interval generator */ - unimplementedScalarPairToInterval(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedScalarPairToInterval(name, _x, _y) { + unreachable(`'${name}' is yet implemented for '${this.kind}'`); } /** Stub for scalar triple to interval generator */ - unimplementedScalarTripleToInterval(_x, _y, _z) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedScalarTripleToInterval(name, _x, _y, _z) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for scalar to vector generator */ - unimplementedScalarToVector(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedScalarToVector(name, _x) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for vector to interval generator */ - unimplementedVectorToInterval(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedVectorToInterval(name, _x) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for vector pair to interval generator */ - unimplementedVectorPairToInterval(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedVectorPairToInterval(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for vector to vector generator */ - unimplementedVectorToVector(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedVectorToVector(name, _x) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for vector pair to vector generator */ - unimplementedVectorPairToVector(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedVectorPairToVector(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for vector-scalar to vector generator */ - unimplementedVectorScalarToVector(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedVectorScalarToVector(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for scalar-vector to vector generator */ - unimplementedScalarVectorToVector(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedScalarVectorToVector(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for matrix to interval generator */ - unimplementedMatrixToInterval(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedMatrixToInterval(name, _x) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } - /** Stub for matrix to matix generator */ - unimplementedMatrixToMatrix(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + /** Stub for matrix to matirx generator */ + unimplementedMatrixToMatrix(name, _x) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for matrix pair to matrix generator */ - unimplementedMatrixPairToMatrix(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedMatrixPairToMatrix(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for matrix-scalar to matrix generator */ - unimplementedMatrixScalarToMatrix(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedMatrixScalarToMatrix(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for scalar-matrix to matrix generator */ - unimplementedScalarMatrixToMatrix(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedScalarMatrixToMatrix(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for matrix-vector to vector generator */ - unimplementedMatrixVectorToVector(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedMatrixVectorToVector(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for vector-matrix to vector generator */ - unimplementedVectorMatrixToVector(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unimplementedVectorMatrixToVector(name, _x, _y) { + unreachable(`'${name}' is not yet implemented for '${this.kind}'`); } /** Stub for distance generator */ unimplementedDistance(_x, _y) { - unreachable(`Not yet implemented for ${this.kind}`); + unreachable(`'distance' is not yet implemented for '${this.kind}'`); } /** Stub for faceForward */ unimplementedFaceForward(_x, _y, _z) { - unreachable(`Not yet implemented for ${this.kind}`); + unreachable(`'faceForward' is not yet implemented for '${this.kind}'`); } /** Stub for length generator */ unimplementedLength(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unreachable(`'length' is not yet implemented for '${this.kind}'`); } /** Stub for modf generator */ unimplementedModf(_x) { - unreachable(`Not yet implemented for ${this.kind}`); + unreachable(`'modf' is not yet implemented for '${this.kind}'`); } /** Stub for refract generator */ unimplementedRefract(_i, _s, _r) { - unreachable(`Not yet implemented for ${this.kind}`); + unreachable(`'refract' is not yet implemented for '${this.kind}'`); + } + + /** Version of absoluteErrorInterval that always returns the unboundedInterval */ + unboundedAbsoluteErrorInterval(_n, _error_range) { + return this.constants().unboundedInterval; + } + + /** Version of ulpInterval that always returns the unboundedInterval */ + unboundedUlpInterval(_n, _numULP) { + return this.constants().unboundedInterval; } // Utilities - Defined by subclass @@ -879,6 +913,86 @@ class FPTraits { }, new Array()); } + /** + * @returns a Case for the params and the component-wise interval generator provided. + * The Case will use an interval comparator for matching results. + * @param param0 the first vector param to pass in + * @param param1 the second vector param to pass in + * @param param2 the scalar param to pass in + * @param filter what interval filtering to apply + * @param componentWiseOps callbacks that implement generating a component-wise acceptance interval, + * one component result at a time. + */ + makeVectorPairScalarToVectorComponentWiseCase( + param0, + param1, + param2, + filter, + ...componentWiseOps + ) { + // Width of input vector + const width = param0.length; + assert(2 <= width && width <= 4, 'input vector width must between 2 and 4'); + assert(param1.length === width, 'two input vectors must have the same width'); + param0 = param0.map(this.quantize); + param1 = param1.map(this.quantize); + param2 = this.quantize(param2); + + // Call the component-wise interval generator and build the expectation FPVector + const results = componentWiseOps.map(o => { + return param0.map((el0, index) => o(el0, param1[index], param2)); + }); + if (filter === 'finite' && results.some(r => r.some(e => !e.isFinite()))) { + return undefined; + } + return { + input: [ + toVector(param0, this.scalarBuilder), + toVector(param1, this.scalarBuilder), + this.scalarBuilder(param2), + ], + + expected: anyOf(...results), + }; + } + + /** + * @returns an array of Cases for operations over a range of inputs + * @param param0s array of first vector inputs to try + * @param param1s array of second vector inputs to try + * @param param2s array of scalar inputs to try + * @param filter what interval filtering to apply + * @param componentWiseOpscallbacks that implement generating a component-wise acceptance interval + */ + generateVectorPairScalarToVectorComponentWiseCase( + param0s, + param1s, + param2s, + filter, + ...componentWiseOps + ) { + // Cannot use cartesianProduct here, due to heterogeneous types + const cases = []; + param0s.forEach(param0 => { + param1s.forEach(param1 => { + param2s.forEach(param2 => { + const c = this.makeVectorPairScalarToVectorComponentWiseCase( + param0, + param1, + param2, + filter, + ...componentWiseOps + ); + + if (c !== undefined) { + cases.push(c); + } + }); + }); + }); + return cases; + } + /** * @returns a Case for the param and an array of interval generators provided * @param param the param to pass in @@ -1441,7 +1555,7 @@ class FPTraits { */ runScalarToIntervalOp(x, op) { if (!x.isFinite()) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } if (op.extrema !== undefined) { @@ -1452,7 +1566,7 @@ class FPTraits { ...x.bounds().map(b => this.roundAndFlushScalarToInterval(b, op)) ); - return result.isFinite() ? result : this.constants().anyInterval; + return result.isFinite() ? result : this.constants().unboundedInterval; } /** @@ -1468,7 +1582,7 @@ class FPTraits { */ runScalarPairToIntervalOp(x, y, op) { if (!x.isFinite() || !y.isFinite()) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } if (op.extrema !== undefined) { @@ -1483,7 +1597,7 @@ class FPTraits { }); const result = this.spanIntervals(...outputs); - return result.isFinite() ? result : this.constants().anyInterval; + return result.isFinite() ? result : this.constants().unboundedInterval; } /** @@ -1497,7 +1611,7 @@ class FPTraits { */ runScalarTripleToIntervalOp(x, y, z, op) { if (!x.isFinite() || !y.isFinite() || !z.isFinite()) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } const outputs = new Set(); @@ -1510,7 +1624,7 @@ class FPTraits { }); const result = this.spanIntervals(...outputs); - return result.isFinite() ? result : this.constants().anyInterval; + return result.isFinite() ? result : this.constants().unboundedInterval; } /** @@ -1523,7 +1637,7 @@ class FPTraits { */ runVectorToIntervalOp(x, op) { if (x.some(e => !e.isFinite())) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } const x_values = cartesianProduct(...x.map(e => e.bounds())); @@ -1534,7 +1648,7 @@ class FPTraits { }); const result = this.spanIntervals(...outputs); - return result.isFinite() ? result : this.constants().anyInterval; + return result.isFinite() ? result : this.constants().unboundedInterval; } /** @@ -1548,7 +1662,7 @@ class FPTraits { */ runVectorPairToIntervalOp(x, y, op) { if (x.some(e => !e.isFinite()) || y.some(e => !e.isFinite())) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } const x_values = cartesianProduct(...x.map(e => e.bounds())); @@ -1562,7 +1676,7 @@ class FPTraits { }); const result = this.spanIntervals(...outputs); - return result.isFinite() ? result : this.constants().anyInterval; + return result.isFinite() ? result : this.constants().unboundedInterval; } /** @@ -1575,7 +1689,7 @@ class FPTraits { */ runVectorToVectorOp(x, op) { if (x.some(e => !e.isFinite())) { - return this.constants().anyVector[x.length]; + return this.constants().unboundedVector[x.length]; } const x_values = cartesianProduct(...x.map(e => e.bounds())); @@ -1586,7 +1700,9 @@ class FPTraits { }); const result = this.spanVectors(...outputs); - return result.every(e => e.isFinite()) ? result : this.constants().anyVector[result.length]; + return result.every(e => e.isFinite()) + ? result + : this.constants().unboundedVector[result.length]; } /** @@ -1617,7 +1733,7 @@ class FPTraits { */ runVectorPairToVectorOp(x, y, op) { if (x.some(e => !e.isFinite()) || y.some(e => !e.isFinite())) { - return this.constants().anyVector[x.length]; + return this.constants().unboundedVector[x.length]; } const x_values = cartesianProduct(...x.map(e => e.bounds())); @@ -1631,7 +1747,9 @@ class FPTraits { }); const result = this.spanVectors(...outputs); - return result.every(e => e.isFinite()) ? result : this.constants().anyVector[result.length]; + return result.every(e => e.isFinite()) + ? result + : this.constants().unboundedVector[result.length]; } /** @@ -1673,7 +1791,7 @@ class FPTraits { const num_cols = m.length; const num_rows = m[0].length; if (m.some(c => c.some(r => !r.isFinite()))) { - return this.constants().anyMatrix[num_cols][num_rows]; + return this.constants().unboundedMatrix[num_cols][num_rows]; } const m_flat = flatten2DArray(m); @@ -1694,7 +1812,7 @@ class FPTraits { // arrays. return result.every(c => c.every(r => r.isFinite())) ? result - : this.constants().anyMatrix[result_cols][result_rows]; + : this.constants().unboundedMatrix[result_cols][result_rows]; } /** @@ -1736,7 +1854,7 @@ class FPTraits { AbsoluteErrorIntervalOp(error_range) { const op = { impl: _ => { - return this.constants().anyInterval; + return this.constants().unboundedInterval; }, }; @@ -1750,7 +1868,7 @@ class FPTraits { assert(!Number.isNaN(n), `absolute error not defined for NaN`); // Return anyInterval if given center n is infinity. if (!this.isFinite(n)) { - return this.constants().anyInterval; + return this.constants().unboundedInterval; } return this.toInterval([n - error_range, n + error_range]); }; @@ -1796,7 +1914,7 @@ class FPTraits { ULPIntervalOp(numULP) { const op = { impl: _ => { - return this.constants().anyInterval; + return this.constants().unboundedInterval; }, }; @@ -1839,14 +1957,16 @@ class FPTraits { /** Calculate an acceptance interval for abs(n) */ - // This op should be implemented diffferently for f32 and f16. + // This op is implemented differently for f32 and f16. AcosIntervalOp = { impl: this.limitScalarToIntervalDomain(this.toInterval([-1.0, 1.0]), n => { + assert(this.kind === 'f32' || this.kind === 'f16'); // acos(n) = atan2(sqrt(1.0 - n * n), n) or a polynomial approximation with absolute error const y = this.sqrtInterval(this.subtractionInterval(1, this.multiplicationInterval(n, n))); + const approx_abs_error = this.kind === 'f32' ? 6.77e-5 : 3.91e-3; return this.spanIntervals( this.atan2Interval(y, n), - this.absoluteErrorInterval(Math.acos(n), 6.77e-5) + this.absoluteErrorInterval(Math.acos(n), approx_abs_error) ); }), }; @@ -1917,14 +2037,16 @@ class FPTraits { /** Calculate an acceptance interval of x + y, when x and y are matrices */ - // This op should be implemented diffferently for f32 and f16. + // This op is implemented differently for f32 and f16. AsinIntervalOp = { impl: this.limitScalarToIntervalDomain(this.toInterval([-1.0, 1.0]), n => { + assert(this.kind === 'f32' || this.kind === 'f16'); // asin(n) = atan2(n, sqrt(1.0 - n * n)) or a polynomial approximation with absolute error const x = this.sqrtInterval(this.subtractionInterval(1, this.multiplicationInterval(n, n))); + const approx_abs_error = this.kind === 'f32' ? 6.77e-5 : 3.91e-3; return this.spanIntervals( this.atan2Interval(n, x), - this.absoluteErrorInterval(Math.asin(n), 6.77e-5) + this.absoluteErrorInterval(Math.asin(n), approx_abs_error) ); }), }; @@ -1953,7 +2075,9 @@ class FPTraits { AtanIntervalOp = { impl: n => { - return this.ulpInterval(Math.atan(n), 4096); + assert(this.kind === 'f32' || this.kind === 'f16'); + const ulp_error = this.kind === 'f32' ? 4096 : 5; + return this.ulpInterval(Math.atan(n), ulp_error); }, }; @@ -1964,53 +2088,67 @@ class FPTraits { /** Calculate an acceptance interval of atan(x) */ - // This op should be implemented diffferently for f32 and f16. - Atan2IntervalOp = { - impl: this.limitScalarPairToIntervalDomain( - { - // For atan2, there params are labelled (y, x), not (x, y), so domain.x is first parameter (y), and domain.y is - // the second parameter (x) - x: [ - this.toInterval([kValue.f32.negative.min, kValue.f32.negative.max]), - this.toInterval([kValue.f32.positive.min, kValue.f32.positive.max]), - ], - // first param must be finite and normal - y: [this.toInterval([-(2 ** 126), -(2 ** -126)]), this.toInterval([2 ** -126, 2 ** 126])], // inherited from division + // This op is implemented differently for f32 and f16. + Atan2IntervalOpBuilder() { + assert(this.kind === 'f32' || this.kind === 'f16'); + const constants = this.constants(); + // For atan2, the params are labelled (y, x), not (x, y), so domain.x is first parameter (y), + // and domain.y is the second parameter (x). + // The first param must be finite and normal. + const domain_x = [ + this.toInterval([constants.negative.min, constants.negative.max]), + this.toInterval([constants.positive.min, constants.positive.max]), + ]; + + // inherited from division + const domain_y = + this.kind === 'f32' + ? [this.toInterval([-(2 ** 126), -(2 ** -126)]), this.toInterval([2 ** -126, 2 ** 126])] + : [this.toInterval([-(2 ** 14), -(2 ** -14)]), this.toInterval([2 ** -14, 2 ** 14])]; + const ulp_error = this.kind === 'f32' ? 4096 : 5; + return { + impl: this.limitScalarPairToIntervalDomain( + { + x: domain_x, + y: domain_y, + }, + (y, x) => { + // Accurate result in f64 + let atan_yx = Math.atan(y / x); + // Offset by +/-pi according to the definition. Use pi value in f64 because we are + // handling accurate result. + if (x < 0) { + // x < 0, y > 0, result is atan(y/x) + π + if (y > 0) { + atan_yx = atan_yx + kValue.f64.positive.pi.whole; + } else { + // x < 0, y < 0, result is atan(y/x) - π + atan_yx = atan_yx - kValue.f64.positive.pi.whole; + } + } + + return this.ulpInterval(atan_yx, ulp_error); + } + ), + + extrema: (y, x) => { + // There is discontinuity, which generates an unbounded result, at y/x = 0 that will dominate the accuracy + if (y.contains(0)) { + if (x.contains(0)) { + return [this.toInterval(0), this.toInterval(0)]; + } + return [this.toInterval(0), x]; + } + return [y, x]; }, - (y, x) => { - const atan_yx = Math.atan(y / x); - // x > 0, atan(y/x) - if (x > 0) { - return this.ulpInterval(atan_yx, 4096); - } - - // x < 0, y > 0, atan(y/x) + π - if (y > 0) { - return this.ulpInterval(atan_yx + kValue.f32.positive.pi.whole, 4096); - } - - // x < 0, y < 0, atan(y/x) - π - return this.ulpInterval(atan_yx - kValue.f32.positive.pi.whole, 4096); - } - ), - - extrema: (y, x) => { - // There is discontinuity + undefined behaviour at y/x = 0 that will dominate the accuracy - if (y.contains(0)) { - if (x.contains(0)) { - return [this.toInterval(0), this.toInterval(0)]; - } - return [this.toInterval(0), x]; - } - return [y, x]; - }, - }; + }; + } atan2IntervalImpl(y, x) { return this.runScalarPairToIntervalOp( this.toInterval(y), this.toInterval(x), - this.Atan2IntervalOp + this.Atan2IntervalOpBuilder() ); } @@ -2092,7 +2230,9 @@ class FPTraits { CosIntervalOp = { impl: this.limitScalarToIntervalDomain(this.constants().negPiToPiInterval, n => { - return this.absoluteErrorInterval(Math.cos(n), 2 ** -11); + assert(this.kind === 'f32' || this.kind === 'f16'); + const abs_error = this.kind === 'f32' ? 2 ** -11 : 2 ** -7; + return this.absoluteErrorInterval(Math.cos(n), abs_error); }), }; @@ -2370,35 +2510,45 @@ class FPTraits { /** Calculate an acceptance interval of distance(x, y) */ - // This op should be implemented diffferently for f32 and f16. - DivisionIntervalOp = { - impl: this.limitScalarPairToIntervalDomain( - { - x: [this.toInterval([kValue.f32.negative.min, kValue.f32.positive.max])], - y: [this.toInterval([-(2 ** 126), -(2 ** -126)]), this.toInterval([2 ** -126, 2 ** 126])], - }, - (x, y) => { - if (y === 0) { - return this.constants().anyInterval; + // This op is implemented differently for f32 and f16. + DivisionIntervalOpBuilder() { + assert(this.kind === 'f32' || this.kind === 'f16'); + const constants = this.constants(); + const domain_x = [this.toInterval([constants.negative.min, constants.positive.max])]; + const domain_y = + this.kind === 'f32' + ? [this.toInterval([-(2 ** 126), -(2 ** -126)]), this.toInterval([2 ** -126, 2 ** 126])] + : [this.toInterval([-(2 ** 14), -(2 ** -14)]), this.toInterval([2 ** -14, 2 ** 14])]; + return { + impl: this.limitScalarPairToIntervalDomain( + { + x: domain_x, + y: domain_y, + }, + (x, y) => { + if (y === 0) { + return constants.unboundedInterval; + } + return this.ulpInterval(x / y, 2.5); } - return this.ulpInterval(x / y, 2.5); - } - ), + ), - extrema: (x, y) => { - // division has a discontinuity at y = 0. - if (y.contains(0)) { - y = this.toInterval(0); - } - return [x, y]; - }, - }; + extrema: (x, y) => { + // division has a discontinuity at y = 0. + if (y.contains(0)) { + y = this.toInterval(0); + } + return [x, y]; + }, + }; + } divisionIntervalImpl(x, y) { + assert(this.kind === 'f32' || this.kind === 'f16'); return this.runScalarPairToIntervalOp( this.toInterval(x), this.toInterval(y), - this.DivisionIntervalOp + this.DivisionIntervalOpBuilder() ); } @@ -2438,7 +2588,9 @@ class FPTraits { ExpIntervalOp = { impl: n => { - return this.ulpInterval(Math.exp(n), 3 + 2 * Math.abs(n)); + assert(this.kind === 'f32' || this.kind === 'f16'); + const ulp_error = this.kind === 'f32' ? 3 + 2 * Math.abs(n) : 1 + 2 * Math.abs(n); + return this.ulpInterval(Math.exp(n), ulp_error); }, }; @@ -2450,7 +2602,9 @@ class FPTraits { Exp2IntervalOp = { impl: n => { - return this.ulpInterval(Math.pow(2, n), 3 + 2 * Math.abs(n)); + assert(this.kind === 'f32' || this.kind === 'f16'); + const ulp_error = this.kind === 'f32' ? 3 + 2 * Math.abs(n) : 1 + 2 * Math.abs(n); + return this.ulpInterval(Math.pow(2, n), ulp_error); }, }; @@ -2556,12 +2710,19 @@ class FPTraits { // This is how other shading languages operate and allows for a desirable // wrap around in graphics programming. const result = this.subtractionInterval(n, this.floorInterval(n)); + assert( + // negative.subnormal.min instead of 0, because FTZ can occur + // selectively during the calculation + this.toInterval([this.constants().negative.subnormal.min, 1.0]).contains(result), + `fract(${n}) interval [${result}] unexpectedly extends beyond [~0.0, 1.0]` + ); + if (result.contains(1)) { // Very small negative numbers can lead to catastrophic cancellation, // thus calculating a fract of 1.0, which is technically not a // fractional part, so some implementations clamp the result to next // nearest number. - return this.spanIntervals(result, this.toInterval(kValue.f32.positive.less_than_one)); + return this.spanIntervals(result, this.toInterval(this.constants().positive.less_than_one)); } return result; }, @@ -2585,37 +2746,52 @@ class FPTraits { /** Calculate an acceptance interval of inverseSqrt(x) */ - // This op should be implemented diffferently for f32 and f16. LdexpIntervalOp = { - impl: this.limitScalarPairToIntervalDomain( - // Implementing SPIR-V's more restrictive domain until - // https://github.com/gpuweb/gpuweb/issues/3134 is resolved - { - x: [this.toInterval([kValue.f32.negative.min, kValue.f32.positive.max])], - y: [this.toInterval([-126, 128])], - }, - (e1, e2) => { - // Though the spec says the result of ldexp(e1, e2) = e1 * 2 ^ e2, the - // accuracy is listed as correctly rounded to the true value, so the - // inheritance framework does not need to be invoked to determine - // bounds. - // Instead, the value at a higher precision is calculated and passed to - // correctlyRoundedInterval. - const result = e1 * 2 ** e2; - if (Number.isNaN(result)) { - // Overflowed TS's number type, so definitely out of bounds for f32 - return this.constants().anyInterval; - } - return this.correctlyRoundedInterval(result); + impl: (e1, e2) => { + assert(this.kind === 'f32' || this.kind === 'f16'); + assert(Number.isInteger(e2), 'the second param of ldexp must be an integer'); + const bias = this.kind === 'f32' ? 127 : 15; + // Spec explicitly calls indeterminate value if e2 > bias + 1 + if (e2 > bias + 1) { + return this.constants().unboundedInterval; } - ), + // The spec says the result of ldexp(e1, e2) = e1 * 2 ^ e2, and the accuracy is correctly + // rounded to the true value, so the inheritance framework does not need to be invoked to + // determine bounds. + // Instead, the value at a higher precision is calculated and passed to + // correctlyRoundedInterval. + const result = e1 * 2 ** e2; + if (!Number.isFinite(result)) { + // Overflowed TS's number type, so definitely out of bounds for f32/f16 + return this.constants().unboundedInterval; + } + // The result may be zero if e2 + bias <= 0, but we can't simply span the interval to 0.0. + // For example, for f32 input e1 = 2**120 and e2 = -130, e2 + bias = -3 <= 0, but + // e1 * 2 ** e2 = 2**-10, so the valid result is 2**-10 or 0.0, instead of [0.0, 2**-10]. + // Always return the correctly-rounded interval, and special examination should be taken when + // using the result. + return this.correctlyRoundedInterval(result); + }, }; ldexpIntervalImpl(e1, e2) { - return this.roundAndFlushScalarPairToInterval(e1, e2, this.LdexpIntervalOp); + // Only round and flush e1, as e2 is of integer type (i32 or abstract integer) and should be + // precise. + return this.roundAndFlushScalarToInterval(e1, { + impl: e1 => this.LdexpIntervalOp.impl(e1, e2), + }); } - /** Calculate an acceptance interval of ldexp(e1, e2) */ + /** + * Calculate an acceptance interval of ldexp(e1, e2), where e2 is integer + * + * Spec indicate that the result may be zero if e2 + bias <= 0, no matter how large + * was e1 * 2 ** e2, i.e. the actual valid result is correctlyRounded(e1 * 2 ** e2) or 0.0, if + * e2 + bias <= 0. Such discontinious flush-to-zero behavior is hard to be expressed using + * FPInterval, therefore in the situation of e2 + bias <= 0 the returned interval would be just + * correctlyRounded(e1 * 2 ** e2), and special examination should be taken when using the result. + * + */ LengthIntervalScalarOp = { impl: n => { @@ -2641,8 +2817,10 @@ class FPTraits { LogIntervalOp = { impl: this.limitScalarToIntervalDomain(this.constants().greaterThanZeroInterval, n => { + assert(this.kind === 'f32' || this.kind === 'f16'); + const abs_error = this.kind === 'f32' ? 2 ** -21 : 2 ** -7; if (n >= 0.5 && n <= 2.0) { - return this.absoluteErrorInterval(Math.log(n), 2 ** -21); + return this.absoluteErrorInterval(Math.log(n), abs_error); } return this.ulpInterval(Math.log(n), 3); }), @@ -2656,8 +2834,10 @@ class FPTraits { Log2IntervalOp = { impl: this.limitScalarToIntervalDomain(this.constants().greaterThanZeroInterval, n => { + assert(this.kind === 'f32' || this.kind === 'f16'); + const abs_error = this.kind === 'f32' ? 2 ** -21 : 2 ** -7; if (n >= 0.5 && n <= 2.0) { - return this.absoluteErrorInterval(Math.log2(n), 2 ** -21); + return this.absoluteErrorInterval(Math.log2(n), abs_error); } return this.ulpInterval(Math.log2(n), 3); }), @@ -2943,7 +3123,7 @@ class FPTraits { /** * refract is a singular function in the sense that it is the only builtin that - * takes in (FPVector, FPVector, F32) and returns FPVector and is basically + * takes in (FPVector, FPVector, F32/F16) and returns FPVector and is basically * defined in terms of other functions. * * Instead of implementing all the framework code to integrate it with its @@ -2967,7 +3147,7 @@ class FPTraits { if (!k.isFinite() || k.containsZeroOrSubnormals()) { // There is a discontinuity at k == 0, due to sqrt(k) being calculated, so exiting early - return this.constants().anyVector[this.toVector(i).length]; + return this.constants().unboundedVector[this.toVector(i).length]; } if (k.end < 0.0) { @@ -3073,7 +3253,9 @@ class FPTraits { SinIntervalOp = { impl: this.limitScalarToIntervalDomain(this.constants().negPiToPiInterval, n => { - return this.absoluteErrorInterval(Math.sin(n), 2 ** -11); + assert(this.kind === 'f32' || this.kind === 'f16'); + const abs_error = this.kind === 'f32' ? 2 ** -11 : 2 ** -7; + return this.absoluteErrorInterval(Math.sin(n), abs_error); }), }; @@ -3175,8 +3357,8 @@ class FPTraits { * [0, 0] and [1, 1] indicate that the correct answer in point they encapsulate. * [0, 1] should not be treated as a span, i.e. 0.1 is acceptable, but instead * indicate either 0.0 or 1.0 are acceptable answers. - * [-∞, +∞] is treated as any interval, since an undefined or infinite value - * was passed in. + * [-∞, +∞] is treated as unbounded interval, since an unbounded or + * infinite value was passed in. */ SubtractionIntervalOp = { @@ -3265,7 +3447,12 @@ class FPTraits { // Pre-defined values that get used multiple times in _constants' initializers. Cannot use FPTraits members, since this // executes before they are defined. -const kF32AnyInterval = new FPInterval('f32', Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); +const kF32UnboundedInterval = new FPInterval( + 'f32', + Number.NEGATIVE_INFINITY, + Number.POSITIVE_INFINITY +); + const kF32ZeroInterval = new FPInterval('f32', 0); class F32Traits extends FPTraits { @@ -3273,12 +3460,12 @@ class F32Traits extends FPTraits { positive: { min: kValue.f32.positive.min, max: kValue.f32.positive.max, - infinity: kValue.f32.infinity.positive, + infinity: kValue.f32.positive.infinity, nearest_max: kValue.f32.positive.nearest_max, less_than_one: kValue.f32.positive.less_than_one, subnormal: { - min: kValue.f32.subnormal.positive.min, - max: kValue.f32.subnormal.positive.max, + min: kValue.f32.positive.subnormal.min, + max: kValue.f32.positive.subnormal.max, }, pi: { whole: kValue.f32.positive.pi.whole, @@ -3293,12 +3480,12 @@ class F32Traits extends FPTraits { negative: { min: kValue.f32.negative.min, max: kValue.f32.negative.max, - infinity: kValue.f32.infinity.negative, + infinity: kValue.f32.negative.infinity, nearest_min: kValue.f32.negative.nearest_min, less_than_one: kValue.f32.negative.less_than_one, subnormal: { - min: kValue.f32.subnormal.negative.min, - max: kValue.f32.subnormal.negative.max, + min: kValue.f32.negative.subnormal.min, + max: kValue.f32.negative.subnormal.max, }, pi: { whole: kValue.f32.negative.pi.whole, @@ -3309,7 +3496,7 @@ class F32Traits extends FPTraits { sixth: kValue.f32.negative.pi.sixth, }, }, - anyInterval: kF32AnyInterval, + unboundedInterval: kF32UnboundedInterval, zeroInterval: kF32ZeroInterval, // Have to use the constants.ts values here, because values defined in the // initializer cannot be referenced in the initializer @@ -3321,7 +3508,7 @@ class F32Traits extends FPTraits { greaterThanZeroInterval: new FPInterval( 'f32', - kValue.f32.subnormal.positive.min, + kValue.f32.positive.subnormal.min, kValue.f32.positive.max ), @@ -3330,67 +3517,123 @@ class F32Traits extends FPTraits { 3: [kF32ZeroInterval, kF32ZeroInterval, kF32ZeroInterval], 4: [kF32ZeroInterval, kF32ZeroInterval, kF32ZeroInterval, kF32ZeroInterval], }, - anyVector: { - 2: [kF32AnyInterval, kF32AnyInterval], - 3: [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - 4: [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + unboundedVector: { + 2: [kF32UnboundedInterval, kF32UnboundedInterval], + 3: [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + 4: [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], }, - anyMatrix: { + unboundedMatrix: { 2: { 2: [ - [kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], ], 3: [ - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], ], 4: [ - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], + + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], ], }, 3: { 2: [ - [kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], ], 3: [ - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], ], 4: [ - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], + + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], + + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], ], }, 4: { 2: [ - [kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval], ], 3: [ - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], + [kF32UnboundedInterval, kF32UnboundedInterval, kF32UnboundedInterval], ], 4: [ - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], - [kF32AnyInterval, kF32AnyInterval, kF32AnyInterval, kF32AnyInterval], + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], + + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], + + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], + + [ + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + kF32UnboundedInterval, + ], ], }, }, @@ -3560,7 +3803,7 @@ class F32Traits extends FPTraits { this.unpackDataU32[0] = n; if (this.unpackDataF16.some(f => !isFiniteF16(f))) { - return [this.constants().anyInterval, this.constants().anyInterval]; + return [this.constants().unboundedInterval, this.constants().unboundedInterval]; } const result = [ @@ -3569,7 +3812,7 @@ class F32Traits extends FPTraits { ]; if (result.some(r => !r.isFinite())) { - return [this.constants().anyInterval, this.constants().anyInterval]; + return [this.constants().unboundedInterval, this.constants().unboundedInterval]; } return result; } @@ -3584,7 +3827,7 @@ class F32Traits extends FPTraits { ); const op = n => { - return this.maxInterval(this.divisionInterval(n, 32767), -1); + return this.ulpInterval(Math.max(n / 32767, -1), 3); }; this.unpackDataU32[0] = n; @@ -3601,7 +3844,7 @@ class F32Traits extends FPTraits { ); const op = n => { - return this.divisionInterval(n, 65535); + return this.ulpInterval(n / 65535, 3); }; this.unpackDataU32[0] = n; @@ -3618,7 +3861,7 @@ class F32Traits extends FPTraits { ); const op = n => { - return this.maxInterval(this.divisionInterval(n, 127), -1); + return this.ulpInterval(Math.max(n / 127, -1), 3); }; this.unpackDataU32[0] = n; return [ @@ -3639,7 +3882,7 @@ class F32Traits extends FPTraits { ); const op = n => { - return this.divisionInterval(n, 255); + return this.ulpInterval(n / 255, 3); }; this.unpackDataU32[0] = n; @@ -3672,7 +3915,7 @@ class F32Traits extends FPTraits { // Pre-defined values that get used multiple times in _constants' initializers. Cannot use FPTraits members, since this // executes before they are defined. -const kAbstractAnyInterval = new FPInterval( +const kAbstractUnboundedInterval = new FPInterval( 'abstract', Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY @@ -3686,12 +3929,12 @@ class FPAbstractTraits extends FPTraits { positive: { min: kValue.f64.positive.min, max: kValue.f64.positive.max, - infinity: kValue.f64.infinity.positive, + infinity: kValue.f64.positive.infinity, nearest_max: kValue.f64.positive.nearest_max, less_than_one: kValue.f64.positive.less_than_one, subnormal: { - min: kValue.f64.subnormal.positive.min, - max: kValue.f64.subnormal.positive.max, + min: kValue.f64.positive.subnormal.min, + max: kValue.f64.positive.subnormal.max, }, pi: { whole: kValue.f64.positive.pi.whole, @@ -3706,12 +3949,12 @@ class FPAbstractTraits extends FPTraits { negative: { min: kValue.f64.negative.min, max: kValue.f64.negative.max, - infinity: kValue.f64.infinity.negative, + infinity: kValue.f64.negative.infinity, nearest_min: kValue.f64.negative.nearest_min, less_than_one: kValue.f64.negative.less_than_one, subnormal: { - min: kValue.f64.subnormal.negative.min, - max: kValue.f64.subnormal.negative.max, + min: kValue.f64.negative.subnormal.min, + max: kValue.f64.negative.subnormal.max, }, pi: { whole: kValue.f64.negative.pi.whole, @@ -3722,7 +3965,7 @@ class FPAbstractTraits extends FPTraits { sixth: kValue.f64.negative.pi.sixth, }, }, - anyInterval: kAbstractAnyInterval, + unboundedInterval: kAbstractUnboundedInterval, zeroInterval: kAbstractZeroInterval, // Have to use the constants.ts values here, because values defined in the // initializer cannot be referenced in the initializer @@ -3734,7 +3977,7 @@ class FPAbstractTraits extends FPTraits { greaterThanZeroInterval: new FPInterval( 'abstract', - kValue.f64.subnormal.positive.min, + kValue.f64.positive.subnormal.min, kValue.f64.positive.max ), @@ -3748,67 +3991,123 @@ class FPAbstractTraits extends FPTraits { kAbstractZeroInterval, ], }, - anyVector: { - 2: [kAbstractAnyInterval, kAbstractAnyInterval], - 3: [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - 4: [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + unboundedVector: { + 2: [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + 3: [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + 4: [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], }, - anyMatrix: { + unboundedMatrix: { 2: { 2: [ - [kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], ], 3: [ - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], ], 4: [ - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], + + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], ], }, 3: { 2: [ - [kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], ], 3: [ - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], ], 4: [ - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], + + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], + + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], ], }, 4: { 2: [ - [kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval], ], 3: [ - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], + [kAbstractUnboundedInterval, kAbstractUnboundedInterval, kAbstractUnboundedInterval], ], 4: [ - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], - [kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval, kAbstractAnyInterval], + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], + + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], + + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], + + [ + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + kAbstractUnboundedInterval, + ], ], }, }, @@ -3823,7 +4122,8 @@ class FPAbstractTraits extends FPTraits { } // Utilities - Overrides - // number is represented as a f64, so any number value is already quantized to f64 + // number is represented as a f64 internally, so all number values are already + // quantized to f64 quantize = n => { return n; }; @@ -3832,94 +4132,135 @@ class FPAbstractTraits extends FPTraits { isSubnormal = isSubnormalNumberF64; flushSubnormal = flushSubnormalNumberF64; oneULP = oneULPF64; - scalarBuilder = f64; + scalarBuilder = abstractFloat; // Framework - Fundamental Error Intervals - Overrides - absoluteErrorInterval = this.absoluteErrorIntervalImpl.bind(this); + absoluteErrorInterval = this.unboundedAbsoluteErrorInterval.bind(this); correctlyRoundedInterval = this.correctlyRoundedIntervalImpl.bind(this); correctlyRoundedMatrix = this.correctlyRoundedMatrixImpl.bind(this); - ulpInterval = this.ulpIntervalImpl.bind(this); + ulpInterval = this.unboundedUlpInterval.bind(this); // Framework - API - Overrides - absInterval = this.unimplementedScalarToInterval.bind(this); - acosInterval = this.unimplementedScalarToInterval.bind(this); - acoshAlternativeInterval = this.unimplementedScalarToInterval.bind(this); - acoshPrimaryInterval = this.unimplementedScalarToInterval.bind(this); + absInterval = this.absIntervalImpl.bind(this); + acosInterval = this.unimplementedScalarToInterval.bind(this, 'acosInterval'); + acoshAlternativeInterval = this.unimplementedScalarToInterval.bind( + this, + 'acoshAlternativeInterval' + ); + + acoshPrimaryInterval = this.unimplementedScalarToInterval.bind(this, 'acoshPrimaryInterval'); + acoshIntervals = [this.acoshAlternativeInterval, this.acoshPrimaryInterval]; - additionInterval = this.unimplementedScalarPairToInterval.bind(this); - additionMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind(this); - asinInterval = this.unimplementedScalarToInterval.bind(this); - asinhInterval = this.unimplementedScalarToInterval.bind(this); - atanInterval = this.unimplementedScalarToInterval.bind(this); - atan2Interval = this.unimplementedScalarPairToInterval.bind(this); - atanhInterval = this.unimplementedScalarToInterval.bind(this); - ceilInterval = this.unimplementedScalarToInterval.bind(this); - clampMedianInterval = this.unimplementedScalarTripleToInterval.bind(this); - clampMinMaxInterval = this.unimplementedScalarTripleToInterval.bind(this); + additionInterval = this.additionIntervalImpl.bind(this); + additionMatrixMatrixInterval = this.additionMatrixMatrixIntervalImpl.bind(this); + asinInterval = this.unimplementedScalarToInterval.bind(this, 'asinInterval'); + asinhInterval = this.unimplementedScalarToInterval.bind(this, 'asinhInterval'); + atanInterval = this.unimplementedScalarToInterval.bind(this, 'atanInterval'); + atan2Interval = this.unimplementedScalarPairToInterval.bind(this, 'atan2Interval'); + + atanhInterval = this.unimplementedScalarToInterval.bind(this, 'atanhInterval'); + ceilInterval = this.unimplementedScalarToInterval.bind(this, 'ceilInterval'); + clampMedianInterval = this.clampMedianIntervalImpl.bind(this); + clampMinMaxInterval = this.clampMinMaxIntervalImpl.bind(this); clampIntervals = [this.clampMedianInterval, this.clampMinMaxInterval]; - cosInterval = this.unimplementedScalarToInterval.bind(this); - coshInterval = this.unimplementedScalarToInterval.bind(this); - crossInterval = this.unimplementedVectorPairToVector.bind(this); - degreesInterval = this.unimplementedScalarToInterval.bind(this); - determinantInterval = this.unimplementedMatrixToInterval.bind(this); + cosInterval = this.unimplementedScalarToInterval.bind(this, 'cosInterval'); + coshInterval = this.unimplementedScalarToInterval.bind(this, 'coshInterval'); + crossInterval = this.crossIntervalImpl.bind(this); + degreesInterval = this.degreesIntervalImpl.bind(this); + determinantInterval = this.unimplementedMatrixToInterval.bind(this, 'determinantInterval'); + distanceInterval = this.unimplementedDistance.bind(this); - divisionInterval = this.unimplementedScalarPairToInterval.bind(this); - dotInterval = this.unimplementedVectorPairToInterval.bind(this); - expInterval = this.unimplementedScalarToInterval.bind(this); - exp2Interval = this.unimplementedScalarToInterval.bind(this); + divisionInterval = this.unimplementedScalarPairToInterval.bind(this, 'divisionInterval'); + + dotInterval = this.unimplementedVectorPairToInterval.bind(this, 'dotInterval'); + expInterval = this.unimplementedScalarToInterval.bind(this, 'expInterval'); + exp2Interval = this.unimplementedScalarToInterval.bind(this, 'exp2Interval'); faceForwardIntervals = this.unimplementedFaceForward.bind(this); - floorInterval = this.unimplementedScalarToInterval.bind(this); - fmaInterval = this.unimplementedScalarTripleToInterval.bind(this); - fractInterval = this.unimplementedScalarToInterval.bind(this); - inverseSqrtInterval = this.unimplementedScalarToInterval.bind(this); - ldexpInterval = this.unimplementedScalarPairToInterval.bind(this); + floorInterval = this.unimplementedScalarToInterval.bind(this, 'floorInterval'); + fmaInterval = this.fmaIntervalImpl.bind(this); + fractInterval = this.unimplementedScalarToInterval.bind(this, 'fractInterval'); + inverseSqrtInterval = this.unimplementedScalarToInterval.bind(this, 'inverseSqrtInterval'); + + ldexpInterval = this.unimplementedScalarPairToInterval.bind(this, 'ldexpInterval'); + lengthInterval = this.unimplementedLength.bind(this); - logInterval = this.unimplementedScalarToInterval.bind(this); - log2Interval = this.unimplementedScalarToInterval.bind(this); - maxInterval = this.unimplementedScalarPairToInterval.bind(this); - minInterval = this.unimplementedScalarPairToInterval.bind(this); - mixImpreciseInterval = this.unimplementedScalarTripleToInterval.bind(this); - mixPreciseInterval = this.unimplementedScalarTripleToInterval.bind(this); + logInterval = this.unimplementedScalarToInterval.bind(this, 'logInterval'); + log2Interval = this.unimplementedScalarToInterval.bind(this, 'log2Interval'); + maxInterval = this.maxIntervalImpl.bind(this); + minInterval = this.minIntervalImpl.bind(this); + mixImpreciseInterval = this.unimplementedScalarTripleToInterval.bind( + this, + 'mixImpreciseInterval' + ); + + mixPreciseInterval = this.unimplementedScalarTripleToInterval.bind(this, 'mixPreciseInterval'); + mixIntervals = [this.mixImpreciseInterval, this.mixPreciseInterval]; - modfInterval = this.unimplementedModf.bind(this); - multiplicationInterval = this.unimplementedScalarPairToInterval.bind(this); - multiplicationMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind(this); + modfInterval = this.modfIntervalImpl.bind(this); + multiplicationInterval = this.multiplicationIntervalImpl.bind(this); + multiplicationMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind( + this, + 'multiplicationMatrixMatrixInterval' + ); - multiplicationMatrixScalarInterval = this.unimplementedMatrixScalarToMatrix.bind(this); + multiplicationMatrixScalarInterval = this.unimplementedMatrixScalarToMatrix.bind( + this, + 'multiplicationMatrixScalarInterval' + ); - multiplicationScalarMatrixInterval = this.unimplementedScalarMatrixToMatrix.bind(this); + multiplicationScalarMatrixInterval = this.unimplementedScalarMatrixToMatrix.bind( + this, + 'multiplicationScalarMatrixInterval' + ); - multiplicationMatrixVectorInterval = this.unimplementedMatrixVectorToVector.bind(this); + multiplicationMatrixVectorInterval = this.unimplementedMatrixVectorToVector.bind( + this, + 'multiplicationMatrixVectorInterval' + ); - multiplicationVectorMatrixInterval = this.unimplementedVectorMatrixToVector.bind(this); + multiplicationVectorMatrixInterval = this.unimplementedVectorMatrixToVector.bind( + this, + 'multiplicationVectorMatrixInterval' + ); + + negationInterval = this.negationIntervalImpl.bind(this); + normalizeInterval = this.unimplementedVectorToVector.bind(this, 'normalizeInterval'); + + powInterval = this.unimplementedScalarPairToInterval.bind(this, 'powInterval'); + quantizeToF16Interval = this.unimplementedScalarToInterval.bind(this, 'quantizeToF16Interval'); + + radiansInterval = this.radiansIntervalImpl.bind(this); + reflectInterval = this.unimplementedVectorPairToVector.bind(this, 'reflectInterval'); - negationInterval = this.unimplementedScalarToInterval.bind(this); - normalizeInterval = this.unimplementedVectorToVector.bind(this); - powInterval = this.unimplementedScalarPairToInterval.bind(this); - quantizeToF16Interval = this.unimplementedScalarToInterval.bind(this); - radiansInterval = this.unimplementedScalarToInterval.bind(this); - reflectInterval = this.unimplementedVectorPairToVector.bind(this); refractInterval = this.unimplementedRefract.bind(this); - remainderInterval = this.unimplementedScalarPairToInterval.bind(this); - roundInterval = this.unimplementedScalarToInterval.bind(this); - saturateInterval = this.unimplementedScalarToInterval.bind(this); - signInterval = this.unimplementedScalarToInterval.bind(this); - sinInterval = this.unimplementedScalarToInterval.bind(this); - sinhInterval = this.unimplementedScalarToInterval.bind(this); - smoothStepInterval = this.unimplementedScalarTripleToInterval.bind(this); - sqrtInterval = this.unimplementedScalarToInterval.bind(this); - stepInterval = this.unimplementedScalarPairToInterval.bind(this); - subtractionInterval = this.unimplementedScalarPairToInterval.bind(this); - subtractionMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind(this); - tanInterval = this.unimplementedScalarToInterval.bind(this); - tanhInterval = this.unimplementedScalarToInterval.bind(this); - transposeInterval = this.unimplementedMatrixToMatrix.bind(this); - truncInterval = this.unimplementedScalarToInterval.bind(this); + remainderInterval = this.unimplementedScalarPairToInterval.bind(this, 'remainderInterval'); + + roundInterval = this.unimplementedScalarToInterval.bind(this, 'roundInterval'); + saturateInterval = this.saturateIntervalImpl.bind(this); + signInterval = this.unimplementedScalarToInterval.bind(this, 'signInterval'); + sinInterval = this.unimplementedScalarToInterval.bind(this, 'sinInterval'); + sinhInterval = this.unimplementedScalarToInterval.bind(this, 'sinhInterval'); + smoothStepInterval = this.unimplementedScalarTripleToInterval.bind(this, 'smoothStepInterval'); + + sqrtInterval = this.unimplementedScalarToInterval.bind(this, 'sqrtInterval'); + stepInterval = this.unimplementedScalarPairToInterval.bind(this, 'stepInterval'); + subtractionInterval = this.subtractionIntervalImpl.bind(this); + subtractionMatrixMatrixInterval = this.subtractionMatrixMatrixIntervalImpl.bind(this); + + tanInterval = this.unimplementedScalarToInterval.bind(this, 'tanInterval'); + tanhInterval = this.unimplementedScalarToInterval.bind(this, 'tanhInterval'); + transposeInterval = this.transposeIntervalImpl.bind(this); + truncInterval = this.truncIntervalImpl.bind(this); } // Pre-defined values that get used multiple times in _constants' initializers. Cannot use FPTraits members, since this // executes before they are defined. -const kF16AnyInterval = new FPInterval('f16', Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY); +const kF16UnboundedInterval = new FPInterval( + 'f16', + Number.NEGATIVE_INFINITY, + Number.POSITIVE_INFINITY +); + const kF16ZeroInterval = new FPInterval('f16', 0); // This is implementation is incomplete @@ -3928,12 +4269,12 @@ class F16Traits extends FPTraits { positive: { min: kValue.f16.positive.min, max: kValue.f16.positive.max, - infinity: kValue.f16.infinity.positive, + infinity: kValue.f16.positive.infinity, nearest_max: kValue.f16.positive.nearest_max, less_than_one: kValue.f16.positive.less_than_one, subnormal: { - min: kValue.f16.subnormal.positive.min, - max: kValue.f16.subnormal.positive.max, + min: kValue.f16.positive.subnormal.min, + max: kValue.f16.positive.subnormal.max, }, pi: { whole: kValue.f16.positive.pi.whole, @@ -3948,12 +4289,12 @@ class F16Traits extends FPTraits { negative: { min: kValue.f16.negative.min, max: kValue.f16.negative.max, - infinity: kValue.f16.infinity.negative, + infinity: kValue.f16.negative.infinity, nearest_min: kValue.f16.negative.nearest_min, less_than_one: kValue.f16.negative.less_than_one, subnormal: { - min: kValue.f16.subnormal.negative.min, - max: kValue.f16.subnormal.negative.max, + min: kValue.f16.negative.subnormal.min, + max: kValue.f16.negative.subnormal.max, }, pi: { whole: kValue.f16.negative.pi.whole, @@ -3964,7 +4305,7 @@ class F16Traits extends FPTraits { sixth: kValue.f16.negative.pi.sixth, }, }, - anyInterval: kF16AnyInterval, + unboundedInterval: kF16UnboundedInterval, zeroInterval: kF16ZeroInterval, // Have to use the constants.ts values here, because values defined in the // initializer cannot be referenced in the initializer @@ -3976,7 +4317,7 @@ class F16Traits extends FPTraits { greaterThanZeroInterval: new FPInterval( 'f16', - kValue.f16.subnormal.positive.min, + kValue.f16.positive.subnormal.min, kValue.f16.positive.max ), @@ -3985,67 +4326,123 @@ class F16Traits extends FPTraits { 3: [kF16ZeroInterval, kF16ZeroInterval, kF16ZeroInterval], 4: [kF16ZeroInterval, kF16ZeroInterval, kF16ZeroInterval, kF16ZeroInterval], }, - anyVector: { - 2: [kF16AnyInterval, kF16AnyInterval], - 3: [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - 4: [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + unboundedVector: { + 2: [kF16UnboundedInterval, kF16UnboundedInterval], + 3: [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + 4: [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], }, - anyMatrix: { + unboundedMatrix: { 2: { 2: [ - [kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], ], 3: [ - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], ], 4: [ - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], + + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], ], }, 3: { 2: [ - [kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], ], 3: [ - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], ], 4: [ - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], + + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], + + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], ], }, 4: { 2: [ - [kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval], ], 3: [ - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], + [kF16UnboundedInterval, kF16UnboundedInterval, kF16UnboundedInterval], ], 4: [ - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], - [kF16AnyInterval, kF16AnyInterval, kF16AnyInterval, kF16AnyInterval], + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], + + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], + + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], + + [ + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + kF16UnboundedInterval, + ], ], }, }, @@ -4075,85 +4472,86 @@ class F16Traits extends FPTraits { ulpInterval = this.ulpIntervalImpl.bind(this); // Framework - API - Overrides - absInterval = this.unimplementedScalarToInterval.bind(this); - acosInterval = this.unimplementedScalarToInterval.bind(this); - acoshAlternativeInterval = this.unimplementedScalarToInterval.bind(this); - acoshPrimaryInterval = this.unimplementedScalarToInterval.bind(this); + absInterval = this.absIntervalImpl.bind(this); + acosInterval = this.acosIntervalImpl.bind(this); + acoshAlternativeInterval = this.acoshAlternativeIntervalImpl.bind(this); + acoshPrimaryInterval = this.acoshPrimaryIntervalImpl.bind(this); acoshIntervals = [this.acoshAlternativeInterval, this.acoshPrimaryInterval]; - additionInterval = this.unimplementedScalarPairToInterval.bind(this); - additionMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind(this); - asinInterval = this.unimplementedScalarToInterval.bind(this); - asinhInterval = this.unimplementedScalarToInterval.bind(this); - atanInterval = this.unimplementedScalarToInterval.bind(this); - atan2Interval = this.unimplementedScalarPairToInterval.bind(this); - atanhInterval = this.unimplementedScalarToInterval.bind(this); - ceilInterval = this.unimplementedScalarToInterval.bind(this); - clampMedianInterval = this.unimplementedScalarTripleToInterval.bind(this); - clampMinMaxInterval = this.unimplementedScalarTripleToInterval.bind(this); + additionInterval = this.additionIntervalImpl.bind(this); + additionMatrixMatrixInterval = this.additionMatrixMatrixIntervalImpl.bind(this); + asinInterval = this.asinIntervalImpl.bind(this); + asinhInterval = this.asinhIntervalImpl.bind(this); + atanInterval = this.atanIntervalImpl.bind(this); + atan2Interval = this.atan2IntervalImpl.bind(this); + atanhInterval = this.atanhIntervalImpl.bind(this); + ceilInterval = this.ceilIntervalImpl.bind(this); + clampMedianInterval = this.clampMedianIntervalImpl.bind(this); + clampMinMaxInterval = this.clampMinMaxIntervalImpl.bind(this); clampIntervals = [this.clampMedianInterval, this.clampMinMaxInterval]; - cosInterval = this.unimplementedScalarToInterval.bind(this); - coshInterval = this.unimplementedScalarToInterval.bind(this); - crossInterval = this.unimplementedVectorPairToVector.bind(this); - degreesInterval = this.unimplementedScalarToInterval.bind(this); - determinantInterval = this.unimplementedMatrixToInterval.bind(this); - distanceInterval = this.unimplementedDistance.bind(this); - divisionInterval = this.unimplementedScalarPairToInterval.bind(this); - dotInterval = this.unimplementedVectorPairToInterval.bind(this); - expInterval = this.unimplementedScalarToInterval.bind(this); - exp2Interval = this.unimplementedScalarToInterval.bind(this); - faceForwardIntervals = this.unimplementedFaceForward.bind(this); - floorInterval = this.unimplementedScalarToInterval.bind(this); - fmaInterval = this.unimplementedScalarTripleToInterval.bind(this); - fractInterval = this.unimplementedScalarToInterval.bind(this); - inverseSqrtInterval = this.unimplementedScalarToInterval.bind(this); - ldexpInterval = this.unimplementedScalarPairToInterval.bind(this); - lengthInterval = this.unimplementedLength.bind(this); - logInterval = this.unimplementedScalarToInterval.bind(this); - log2Interval = this.unimplementedScalarToInterval.bind(this); - maxInterval = this.unimplementedScalarPairToInterval.bind(this); - minInterval = this.unimplementedScalarPairToInterval.bind(this); - mixImpreciseInterval = this.unimplementedScalarTripleToInterval.bind(this); - mixPreciseInterval = this.unimplementedScalarTripleToInterval.bind(this); + cosInterval = this.cosIntervalImpl.bind(this); + coshInterval = this.coshIntervalImpl.bind(this); + crossInterval = this.crossIntervalImpl.bind(this); + degreesInterval = this.degreesIntervalImpl.bind(this); + determinantInterval = this.determinantIntervalImpl.bind(this); + distanceInterval = this.distanceIntervalImpl.bind(this); + divisionInterval = this.divisionIntervalImpl.bind(this); + dotInterval = this.dotIntervalImpl.bind(this); + expInterval = this.expIntervalImpl.bind(this); + exp2Interval = this.exp2IntervalImpl.bind(this); + faceForwardIntervals = this.faceForwardIntervalsImpl.bind(this); + floorInterval = this.floorIntervalImpl.bind(this); + fmaInterval = this.fmaIntervalImpl.bind(this); + fractInterval = this.fractIntervalImpl.bind(this); + inverseSqrtInterval = this.inverseSqrtIntervalImpl.bind(this); + ldexpInterval = this.ldexpIntervalImpl.bind(this); + lengthInterval = this.lengthIntervalImpl.bind(this); + logInterval = this.logIntervalImpl.bind(this); + log2Interval = this.log2IntervalImpl.bind(this); + maxInterval = this.maxIntervalImpl.bind(this); + minInterval = this.minIntervalImpl.bind(this); + mixImpreciseInterval = this.mixImpreciseIntervalImpl.bind(this); + mixPreciseInterval = this.mixPreciseIntervalImpl.bind(this); mixIntervals = [this.mixImpreciseInterval, this.mixPreciseInterval]; - modfInterval = this.unimplementedModf.bind(this); - multiplicationInterval = this.unimplementedScalarPairToInterval.bind(this); - multiplicationMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind(this); + modfInterval = this.modfIntervalImpl.bind(this); + multiplicationInterval = this.multiplicationIntervalImpl.bind(this); + multiplicationMatrixMatrixInterval = this.multiplicationMatrixMatrixIntervalImpl.bind(this); - multiplicationMatrixScalarInterval = this.unimplementedMatrixScalarToMatrix.bind(this); + multiplicationMatrixScalarInterval = this.multiplicationMatrixScalarIntervalImpl.bind(this); - multiplicationScalarMatrixInterval = this.unimplementedScalarMatrixToMatrix.bind(this); + multiplicationScalarMatrixInterval = this.multiplicationScalarMatrixIntervalImpl.bind(this); - multiplicationMatrixVectorInterval = this.unimplementedMatrixVectorToVector.bind(this); + multiplicationMatrixVectorInterval = this.multiplicationMatrixVectorIntervalImpl.bind(this); - multiplicationVectorMatrixInterval = this.unimplementedVectorMatrixToVector.bind(this); + multiplicationVectorMatrixInterval = this.multiplicationVectorMatrixIntervalImpl.bind(this); - negationInterval = this.unimplementedScalarToInterval.bind(this); - normalizeInterval = this.unimplementedVectorToVector.bind(this); - powInterval = this.unimplementedScalarPairToInterval.bind(this); + negationInterval = this.negationIntervalImpl.bind(this); + normalizeInterval = this.normalizeIntervalImpl.bind(this); + powInterval = this.powIntervalImpl.bind(this); quantizeToF16Interval = this.quantizeToF16IntervalNotAvailable.bind(this); - radiansInterval = this.unimplementedScalarToInterval.bind(this); - reflectInterval = this.unimplementedVectorPairToVector.bind(this); - refractInterval = this.unimplementedRefract.bind(this); - remainderInterval = this.unimplementedScalarPairToInterval.bind(this); - roundInterval = this.unimplementedScalarToInterval.bind(this); - saturateInterval = this.unimplementedScalarToInterval.bind(this); - signInterval = this.unimplementedScalarToInterval.bind(this); - sinInterval = this.unimplementedScalarToInterval.bind(this); - sinhInterval = this.unimplementedScalarToInterval.bind(this); - smoothStepInterval = this.unimplementedScalarTripleToInterval.bind(this); - sqrtInterval = this.unimplementedScalarToInterval.bind(this); - stepInterval = this.unimplementedScalarPairToInterval.bind(this); - subtractionInterval = this.unimplementedScalarPairToInterval.bind(this); - subtractionMatrixMatrixInterval = this.unimplementedMatrixPairToMatrix.bind(this); - tanInterval = this.unimplementedScalarToInterval.bind(this); - tanhInterval = this.unimplementedScalarToInterval.bind(this); - transposeInterval = this.unimplementedMatrixToMatrix.bind(this); - truncInterval = this.unimplementedScalarToInterval.bind(this); + radiansInterval = this.radiansIntervalImpl.bind(this); + reflectInterval = this.reflectIntervalImpl.bind(this); + refractInterval = this.refractIntervalImpl.bind(this); + remainderInterval = this.remainderIntervalImpl.bind(this); + roundInterval = this.roundIntervalImpl.bind(this); + saturateInterval = this.saturateIntervalImpl.bind(this); + signInterval = this.signIntervalImpl.bind(this); + sinInterval = this.sinIntervalImpl.bind(this); + sinhInterval = this.sinhIntervalImpl.bind(this); + smoothStepInterval = this.smoothStepIntervalImpl.bind(this); + sqrtInterval = this.sqrtIntervalImpl.bind(this); + stepInterval = this.stepIntervalImpl.bind(this); + subtractionInterval = this.subtractionIntervalImpl.bind(this); + subtractionMatrixMatrixInterval = this.subtractionMatrixMatrixIntervalImpl.bind(this); + + tanInterval = this.tanIntervalImpl.bind(this); + tanhInterval = this.tanhIntervalImpl.bind(this); + transposeInterval = this.transposeIntervalImpl.bind(this); + truncInterval = this.truncIntervalImpl.bind(this); /** quantizeToF16 has no f16 overload. */ quantizeToF16IntervalNotAvailable(n) { unreachable("quantizeToF16 don't have f16 overload."); - return kF16AnyInterval; + return kF16UnboundedInterval; } } @@ -4162,3 +4560,29 @@ export const FP = { f16: new F16Traits(), abstract: new FPAbstractTraits(), }; + +/** @returns the floating-point traits for @p type */ +export function fpTraitsFor(type) { + switch (type.kind) { + case 'abstract-float': + return FP.abstract; + case 'f32': + return FP.f32; + case 'f16': + return FP.f16; + default: + unreachable(`unsupported type: ${type}`); + } +} + +/** @returns true if the value @p value is representable with @p type */ +export function isRepresentable(value, type) { + if (!Number.isFinite(value)) { + return false; + } + if (isFloatType(type)) { + const constants = fpTraitsFor(type).constants(); + return value >= constants.negative.min && value <= constants.positive.max; + } + assert(false, `isRepresentable() is not yet implemented for type ${type}`); +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/math.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/math.js index de04fa06764..bb2846f8839 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/math.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/math.js @@ -1,7 +1,12 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { assert } from '../../common/util/util.js'; -import { Float16Array } from '../../external/petamoriken/float16/float16.js'; +import { + Float16Array, + getFloat16, + setFloat16, +} from '../../external/petamoriken/float16/float16.js'; + import { kBit, kValue } from './constants.js'; import { f32, @@ -115,11 +120,11 @@ export function nextAfterF64(val, dir, mode) { } if (val === Number.POSITIVE_INFINITY) { - return kValue.f64.infinity.positive; + return kValue.f64.positive.infinity; } if (val === Number.NEGATIVE_INFINITY) { - return kValue.f64.infinity.negative; + return kValue.f64.negative.infinity; } assert( @@ -132,9 +137,9 @@ export function nextAfterF64(val, dir, mode) { // -/+0 === 0 returns true if (val === 0) { if (dir === 'positive') { - return mode === 'flush' ? kValue.f64.positive.min : kValue.f64.subnormal.positive.min; + return mode === 'flush' ? kValue.f64.positive.min : kValue.f64.positive.subnormal.min; } else { - return mode === 'flush' ? kValue.f64.negative.max : kValue.f64.subnormal.negative.max; + return mode === 'flush' ? kValue.f64.negative.max : kValue.f64.negative.subnormal.max; } } @@ -149,9 +154,9 @@ export function nextAfterF64(val, dir, mode) { // Checking for overflow if ((nextAfterF64Int[0] & 0x7ff0_0000_0000_0000n) === 0x7ff0_0000_0000_0000n) { if (dir === 'positive') { - return kValue.f64.infinity.positive; + return kValue.f64.positive.infinity; } else { - return kValue.f64.infinity.negative; + return kValue.f64.negative.infinity; } } @@ -188,11 +193,11 @@ export function nextAfterF32(val, dir, mode) { } if (val === Number.POSITIVE_INFINITY) { - return kValue.f32.infinity.positive; + return kValue.f32.positive.infinity; } if (val === Number.NEGATIVE_INFINITY) { - return kValue.f32.infinity.negative; + return kValue.f32.negative.infinity; } assert( @@ -205,9 +210,9 @@ export function nextAfterF32(val, dir, mode) { // -/+0 === 0 returns true if (val === 0) { if (dir === 'positive') { - return mode === 'flush' ? kValue.f32.positive.min : kValue.f32.subnormal.positive.min; + return mode === 'flush' ? kValue.f32.positive.min : kValue.f32.positive.subnormal.min; } else { - return mode === 'flush' ? kValue.f32.negative.max : kValue.f32.subnormal.negative.max; + return mode === 'flush' ? kValue.f32.negative.max : kValue.f32.negative.subnormal.max; } } @@ -230,9 +235,9 @@ export function nextAfterF32(val, dir, mode) { // Checking for overflow if ((nextAfterF32Int[0] & 0x7f800000) === 0x7f800000) { if (dir === 'positive') { - return kValue.f32.infinity.positive; + return kValue.f32.positive.infinity; } else { - return kValue.f32.infinity.negative; + return kValue.f32.negative.infinity; } } @@ -269,11 +274,11 @@ export function nextAfterF16(val, dir, mode) { } if (val === Number.POSITIVE_INFINITY) { - return kValue.f16.infinity.positive; + return kValue.f16.positive.infinity; } if (val === Number.NEGATIVE_INFINITY) { - return kValue.f16.infinity.negative; + return kValue.f16.negative.infinity; } assert( @@ -286,9 +291,9 @@ export function nextAfterF16(val, dir, mode) { // -/+0 === 0 returns true if (val === 0) { if (dir === 'positive') { - return mode === 'flush' ? kValue.f16.positive.min : kValue.f16.subnormal.positive.min; + return mode === 'flush' ? kValue.f16.positive.min : kValue.f16.positive.subnormal.min; } else { - return mode === 'flush' ? kValue.f16.negative.max : kValue.f16.subnormal.negative.max; + return mode === 'flush' ? kValue.f16.negative.max : kValue.f16.negative.subnormal.max; } } @@ -311,9 +316,9 @@ export function nextAfterF16(val, dir, mode) { // Checking for overflow if ((nextAfterF16Hex[0] & 0x7c00) === 0x7c00) { if (dir === 'positive') { - return kValue.f16.infinity.positive; + return kValue.f16.positive.infinity; } else { - return kValue.f16.infinity.negative; + return kValue.f16.negative.infinity; } } @@ -338,13 +343,16 @@ export function oneULPF64(target, mode = 'flush') { target = mode === 'flush' ? flushSubnormalNumberF64(target) : target; - // For values at the edge of the range or beyond ulp(x) is defined as the + // For values out of bounds for f64 ulp(x) is defined as the // distance between the two nearest f64 representable numbers to the - // appropriate edge. - if (target === Number.POSITIVE_INFINITY || target >= kValue.f64.positive.max) { - return kValue.f64.positive.max - kValue.f64.positive.nearest_max; - } else if (target === Number.NEGATIVE_INFINITY || target <= kValue.f64.negative.min) { - return kValue.f64.negative.nearest_min - kValue.f64.negative.min; + // appropriate edge, which also happens to be the maximum possible ULP. + if ( + target === Number.POSITIVE_INFINITY || + target >= kValue.f64.positive.max || + target === Number.NEGATIVE_INFINITY || + target <= kValue.f64.negative.min + ) { + return kValue.f64.max_ulp; } // ulp(x) is min(after - before), where @@ -376,13 +384,16 @@ export function oneULPF32(target, mode = 'flush') { target = mode === 'flush' ? flushSubnormalNumberF32(target) : target; - // For values at the edge of the range or beyond ulp(x) is defined as the + // For values out of bounds for f32 ulp(x) is defined as the // distance between the two nearest f32 representable numbers to the - // appropriate edge. - if (target === Number.POSITIVE_INFINITY || target >= kValue.f32.positive.max) { - return kValue.f32.positive.max - kValue.f32.positive.nearest_max; - } else if (target === Number.NEGATIVE_INFINITY || target <= kValue.f32.negative.min) { - return kValue.f32.negative.nearest_min - kValue.f32.negative.min; + // appropriate edge, which also happens to be the maximum possible ULP. + if ( + target === Number.POSITIVE_INFINITY || + target >= kValue.f32.positive.max || + target === Number.NEGATIVE_INFINITY || + target <= kValue.f32.negative.min + ) { + return kValue.f32.max_ulp; } // ulp(x) is min(after - before), where @@ -419,13 +430,16 @@ export function oneULPF16(target, mode = 'flush') { target = mode === 'flush' ? flushSubnormalNumberF16(target) : target; - // For values at the edge of the range or beyond ulp(x) is defined as the + // For values out of bounds for f16 ulp(x) is defined as the // distance between the two nearest f16 representable numbers to the - // appropriate edge. - if (target === Number.POSITIVE_INFINITY || target >= kValue.f16.positive.max) { - return kValue.f16.positive.max - kValue.f16.positive.nearest_max; - } else if (target === Number.NEGATIVE_INFINITY || target <= kValue.f16.negative.min) { - return kValue.f16.negative.nearest_min - kValue.f16.negative.min; + // appropriate edge, which also happens to be the maximum possible ULP. + if ( + target === Number.POSITIVE_INFINITY || + target >= kValue.f16.positive.max || + target === Number.NEGATIVE_INFINITY || + target <= kValue.f16.negative.min + ) { + return kValue.f16.max_ulp; } // ulp(x) is min(after - before), where @@ -484,40 +498,60 @@ export function correctlyRoundedF64(n) { * This function does not consider flushing mode, so subnormals are maintained. * The caller is responsible to flushing before and after as appropriate. * - * Out of range values return the appropriate infinity and edge value. + * Out of bounds values need to consider how they interact with the overflow + * rules. + * * If a value is OOB but not too far out, an implementation may choose to round + * to nearest finite value or the correct infinity. This boundary is at + * 2^(f32.emax + 1) and -(2^(f32.emax + 1)) respectively. + * Values that are at or beyond these limits must be rounded towards the + * appropriate infinity. * * @param n number to be quantized * @returns all of the acceptable roundings for quantizing to 32-bits in * ascending order. */ export function correctlyRoundedF32(n) { - assert(!Number.isNaN(n), `correctlyRoundedF32 not defined for NaN`); - // Above f32 range - if (n === Number.POSITIVE_INFINITY || n > kValue.f32.positive.max) { - return [kValue.f32.positive.max, Number.POSITIVE_INFINITY]; - } - - // Below f32 range - if (n === Number.NEGATIVE_INFINITY || n < kValue.f32.negative.min) { - return [Number.NEGATIVE_INFINITY, kValue.f32.negative.min]; - } - - const n_32 = new Float32Array([n])[0]; - const converted = n_32; - if (n === converted) { - // n is precisely expressible as a f32, so should not be rounded + if (Number.isNaN(n)) { return [n]; } - if (converted > n) { - // n_32 rounded towards +inf, so is after n - const other = nextAfterF32(n_32, 'negative', 'no-flush'); - return [other, converted]; - } else { - // n_32 rounded towards -inf, so is before n - const other = nextAfterF32(n_32, 'positive', 'no-flush'); - return [converted, other]; + // Greater than or equal to the upper overflow boundry + if (n >= 2 ** (kValue.f32.emax + 1)) { + return [Number.POSITIVE_INFINITY]; } + + // OOB, but less than the upper overflow boundary + if (n > kValue.f32.positive.max) { + return [kValue.f32.positive.max, Number.POSITIVE_INFINITY]; + } + + // f32 finite + if (n <= kValue.f32.positive.max && n >= kValue.f32.negative.min) { + const n_32 = new Float32Array([n])[0]; + const converted = n_32; + if (n === converted) { + // n is precisely expressible as a f32, so should not be rounded + return [n]; + } + + if (converted > n) { + // n_32 rounded towards +inf, so is after n + const other = nextAfterF32(n_32, 'negative', 'no-flush'); + return [other, converted]; + } else { + // n_32 rounded towards -inf, so is before n + const other = nextAfterF32(n_32, 'positive', 'no-flush'); + return [converted, other]; + } + } + + // OOB, but greater the lower overflow boundary + if (n > -(2 ** (kValue.f32.emax + 1))) { + return [Number.NEGATIVE_INFINITY, kValue.f32.negative.min]; + } + + // Less than or equal to the lower overflow boundary + return [Number.NEGATIVE_INFINITY]; } /** @@ -533,50 +567,61 @@ export function correctlyRoundedF32(n) { * This function does not consider flushing mode, so subnormals are maintained. * The caller is responsible to flushing before and after as appropriate. * - * Out of range values return the appropriate infinity and edge value. + * Out of bounds values need to consider how they interact with the overflow + * rules. + * * If a value is OOB but not too far out, an implementation may choose to round + * to nearest finite value or the correct infinity. This boundary is at + * 2^(f16.emax + 1) and -(2^(f16.emax + 1)) respectively. + * Values that are at or beyond these limits must be rounded towards the + * appropriate infinity. * * @param n number to be quantized * @returns all of the acceptable roundings for quantizing to 16-bits in * ascending order. */ export function correctlyRoundedF16(n) { - assert(!Number.isNaN(n), `correctlyRoundedF16 not defined for NaN`); - // Above f16 range - if (n === Number.POSITIVE_INFINITY || n > kValue.f16.positive.max) { - return [kValue.f16.positive.max, Number.POSITIVE_INFINITY]; - } - - // Below f16 range - if (n === Number.NEGATIVE_INFINITY || n < kValue.f16.negative.min) { - return [Number.NEGATIVE_INFINITY, kValue.f16.negative.min]; - } - - const n_16 = new Float16Array([n])[0]; - const converted = n_16; - if (n === converted) { - // n is precisely expressible as a f16, so should not be rounded + if (Number.isNaN(n)) { return [n]; } - if (converted > n) { - // n_16 rounded towards +inf, so is after n - const other = nextAfterF16(n_16, 'negative', 'no-flush'); - return [other, converted]; - } else { - // n_16 rounded towards -inf, so is before n - const other = nextAfterF16(n_16, 'positive', 'no-flush'); - return [converted, other]; + // Greater than or equal to the upper overflow boundry + if (n >= 2 ** (kValue.f16.emax + 1)) { + return [Number.POSITIVE_INFINITY]; } -} -/** - * Once-allocated ArrayBuffer/views to avoid overhead of allocation in frexp - * - * This makes frexp non-reentrant due to shared state between calls. - */ -const frexpData = new ArrayBuffer(4); -const frexpDataU32 = new Uint32Array(frexpData); -const frexpDataF32 = new Float32Array(frexpData); + // OOB, but less than the upper overflow boundary + if (n > kValue.f16.positive.max) { + return [kValue.f16.positive.max, Number.POSITIVE_INFINITY]; + } + + // f16 finite + if (n <= kValue.f16.positive.max && n >= kValue.f16.negative.min) { + const n_16 = new Float16Array([n])[0]; + const converted = n_16; + if (n === converted) { + // n is precisely expressible as a f16, so should not be rounded + return [n]; + } + + if (converted > n) { + // n_16 rounded towards +inf, so is after n + const other = nextAfterF16(n_16, 'negative', 'no-flush'); + return [other, converted]; + } else { + // n_16 rounded towards -inf, so is before n + const other = nextAfterF16(n_16, 'positive', 'no-flush'); + return [converted, other]; + } + } + + // OOB, but greater the lower overflow boundary + if (n > -(2 ** (kValue.f16.emax + 1))) { + return [Number.NEGATIVE_INFINITY, kValue.f16.negative.min]; + } + + // Less than or equal to the lower overflow boundary + return [Number.NEGATIVE_INFINITY]; +} /** * Calculates WGSL frexp @@ -585,41 +630,129 @@ const frexpDataF32 = new Float32Array(frexpData); * val = fraction * 2 ^ exponent. * The fraction is 0.0 or its magnitude is in the range [0.5, 1.0). * - * Inspired by golang's implementation of frexp. - * - * This code is non-reentrant due to the use of a non-local data buffer and - * views. - * - * @param val the f32 to split + * @param val the float to split + * @param trait the float type, f32 or f16 or f64 * @returns the results of splitting val */ -export function frexp(val) { - frexpDataF32[0] = val; - // Do not directly use val after this point, so that changes are reflected in - // both the f32 and u32 views. +export function frexp(val, trait) { + const buffer = new ArrayBuffer(8); + const dataView = new DataView(buffer); - // Handles 0 and -0 - if (frexpDataF32[0] === 0) { - return { fract: frexpDataF32[0], exp: 0 }; + // expBitCount and fractBitCount is the bitwidth of exponent and fractional part of the given FP type. + // expBias is the bias constant of exponent of the given FP type. + // Biased exponent (unsigned integer, i.e. the exponent part of float) = unbiased exponent (signed integer) + expBias. + let expBitCount, fractBitCount, expBias; + // To handle the exponent bits of given FP types (f16, f32, and f64), considering the highest 16 + // bits is enough. + // expMaskForHigh16Bits indicates the exponent bitfield in the highest 16 bits of the given FP + // type, and targetExpBitsForHigh16Bits is the exponent bits that corresponding to unbiased + // exponent -1, i.e. the exponent bits when the FP values is in range [0.5, 1.0). + let expMaskForHigh16Bits, targetExpBitsForHigh16Bits; + // Helper function that store the given FP value into buffer as the given FP types + let setFloatToBuffer; + // Helper function that read back FP value from buffer as the given FP types + let getFloatFromBuffer; + + let isFinite; + let isSubnormal; + + if (trait === 'f32') { + // f32 bit pattern: s_eeeeeeee_fffffff_ffffffffffffffff + expBitCount = 8; + fractBitCount = 23; + expBias = 127; + // The exponent bitmask for high 16 bits of f32. + expMaskForHigh16Bits = 0x7f80; + // The target exponent bits is equal to those for f32 0.5 = 0x3f000000. + targetExpBitsForHigh16Bits = 0x3f00; + isFinite = isFiniteF32; + isSubnormal = isSubnormalNumberF32; + // Enforce big-endian so that offset 0 is highest byte. + setFloatToBuffer = v => dataView.setFloat32(0, v, false); + getFloatFromBuffer = () => dataView.getFloat32(0, false); + } else if (trait === 'f16') { + // f16 bit pattern: s_eeeee_ffffffffff + expBitCount = 5; + fractBitCount = 10; + expBias = 15; + // The exponent bitmask for 16 bits of f16. + expMaskForHigh16Bits = 0x7c00; + // The target exponent bits is equal to those for f16 0.5 = 0x3800. + targetExpBitsForHigh16Bits = 0x3800; + isFinite = isFiniteF16; + isSubnormal = isSubnormalNumberF16; + // Enforce big-endian so that offset 0 is highest byte. + setFloatToBuffer = v => setFloat16(dataView, 0, v, false); + getFloatFromBuffer = () => getFloat16(dataView, 0, false); + } else { + assert(trait === 'f64'); + // f64 bit pattern: s_eeeeeeeeeee_ffff_ffffffffffffffffffffffffffffffffffffffffffffffff + expBitCount = 11; + fractBitCount = 52; + expBias = 1023; + // The exponent bitmask for 16 bits of f64. + expMaskForHigh16Bits = 0x7ff0; + // The target exponent bits is equal to those for f64 0.5 = 0x3fe0_0000_0000_0000. + targetExpBitsForHigh16Bits = 0x3fe0; + isFinite = Number.isFinite; + isSubnormal = isSubnormalNumberF64; + // Enforce big-endian so that offset 0 is highest byte. + setFloatToBuffer = v => dataView.setFloat64(0, v, false); + getFloatFromBuffer = () => dataView.getFloat64(0, false); + } + // Helper function that extract the unbiased exponent of the float in buffer. + const extractUnbiasedExpFromNormalFloatInBuffer = () => { + // Assert the float in buffer is finite normal float. + assert(isFinite(getFloatFromBuffer()) && !isSubnormal(getFloatFromBuffer())); + // Get the highest 16 bits of float as uint16, which can contain the whole exponent part for both f16, f32, and f64. + const high16BitsAsUint16 = dataView.getUint16(0, false); + // Return the unbiased exp by masking, shifting and unbiasing. + return ((high16BitsAsUint16 & expMaskForHigh16Bits) >> (16 - 1 - expBitCount)) - expBias; + }; + // Helper function that modify the exponent of float in buffer to make it in range [0.5, 1.0). + // By setting the unbiased exponent to -1, the fp value will be in range 2**-1 * [1.0, 2.0), i.e. [0.5, 1.0). + const modifyExpOfNormalFloatInBuffer = () => { + // Assert the float in buffer is finite normal float. + assert(isFinite(getFloatFromBuffer()) && !isSubnormal(getFloatFromBuffer())); + // Get the highest 16 bits of float as uint16, which contains the whole exponent part for both f16, f32, and f64. + const high16BitsAsUint16 = dataView.getUint16(0, false); + // Modify the exponent bits. + const modifiedHigh16Bits = + (high16BitsAsUint16 & ~expMaskForHigh16Bits) | targetExpBitsForHigh16Bits; + // Set back to buffer + dataView.setUint16(0, modifiedHigh16Bits, false); + }; + + // +/- 0.0 + if (val === 0) { + return { fract: val, exp: 0 }; + } + // NaN and Inf + if (!isFinite(val)) { + return { fract: val, exp: 0 }; } - // Covers NaNs, OOB and Infinities - if (!isFiniteF32(frexpDataF32[0])) { - return { fract: frexpDataF32[0], exp: 0 }; - } + setFloatToBuffer(val); + // Don't use val below. Use helper functions working with buffer instead. - // Normalize if subnormal let exp = 0; - if (isSubnormalNumberF32(frexpDataF32[0])) { - frexpDataF32[0] = frexpDataF32[0] * (1 << 23); - exp = -23; + // Normailze the value if it is subnormal. Increase the exponent by multiplying a subnormal value + // with 2**fractBitCount will result in a finite normal FP value of the given FP type. + if (isSubnormal(getFloatFromBuffer())) { + setFloatToBuffer(getFloatFromBuffer() * 2 ** fractBitCount); + exp = -fractBitCount; } - exp += ((frexpDataU32[0] >> 23) & 0xff) - 126; // shift & mask, minus the bias + 1 + // A normal FP value v is represented as v = ((-1)**s)*(2**(unbiased exponent))*f, where f is in + // range [1.0, 2.0). By moving a factor 2 from f to exponent, we have + // v = ((-1)**s)*(2**(unbiased exponent + 1))*(f / 2), where (f / 2) is in range [0.5, 1.0), so + // the exp = (unbiased exponent + 1) and fract = ((-1)**s)*(f / 2) is what we expect to get from + // frexp function. Note that fract and v only differs in exponent bitfield as long as v is normal. + // Calc the result exp by getting the unbiased float exponent and plus 1. + exp += extractUnbiasedExpFromNormalFloatInBuffer() + 1; + // Modify the exponent of float in buffer to make it be in range [0.5, 1.0) to get fract. + modifyExpOfNormalFloatInBuffer(); - frexpDataU32[0] &= 0x807fffff; // mask the exponent bits - frexpDataU32[0] |= 0x3f000000; // extract the mantissa bits - const fract = frexpDataF32[0]; // Convert from bits to number - return { fract, exp }; + return { fract: getFloatFromBuffer(), exp }; } /** @@ -774,15 +907,15 @@ export function fullF32Range(counts = { pos_sub: 10, pos_norm: 50 }) { const bit_fields = [ ...linearRange(kBit.f32.negative.min, kBit.f32.negative.max, counts.neg_norm), ...linearRange( - kBit.f32.subnormal.negative.min, - kBit.f32.subnormal.negative.max, + kBit.f32.negative.subnormal.min, + kBit.f32.negative.subnormal.max, counts.neg_sub ), 0, ...linearRange( - kBit.f32.subnormal.positive.min, - kBit.f32.subnormal.positive.max, + kBit.f32.positive.subnormal.min, + kBit.f32.positive.subnormal.max, counts.pos_sub ), @@ -833,15 +966,15 @@ export function fullF16Range(counts = { pos_sub: 10, pos_norm: 50 }) { const bit_fields = [ ...linearRange(kBit.f16.negative.min, kBit.f16.negative.max, counts.neg_norm), ...linearRange( - kBit.f16.subnormal.negative.min, - kBit.f16.subnormal.negative.max, + kBit.f16.negative.subnormal.min, + kBit.f16.negative.subnormal.max, counts.neg_sub ), 0, ...linearRange( - kBit.f16.subnormal.positive.min, - kBit.f16.subnormal.positive.max, + kBit.f16.positive.subnormal.min, + kBit.f16.positive.subnormal.max, counts.pos_sub ), @@ -876,15 +1009,15 @@ export function fullF64Range(counts = { pos_sub: 10, pos_norm: 50 }) { const bit_fields = [ ...linearRangeBigInt(kBit.f64.negative.min, kBit.f64.negative.max, counts.neg_norm), ...linearRangeBigInt( - kBit.f64.subnormal.negative.min, - kBit.f64.subnormal.negative.max, + kBit.f64.negative.subnormal.min, + kBit.f64.negative.subnormal.max, counts.neg_sub ), 0n, ...linearRangeBigInt( - kBit.f64.subnormal.positive.min, - kBit.f64.subnormal.positive.max, + kBit.f64.positive.subnormal.min, + kBit.f64.positive.subnormal.max, counts.pos_sub ), @@ -936,15 +1069,15 @@ export function filteredF64Range( const bit_fields = [ ...linearRangeBigInt(u64_begin, kBit.f64.negative.max, counts.neg_norm), ...linearRangeBigInt( - kBit.f64.subnormal.negative.min, - kBit.f64.subnormal.negative.max, + kBit.f64.negative.subnormal.min, + kBit.f64.negative.subnormal.max, counts.neg_sub ), 0n, ...linearRangeBigInt( - kBit.f64.subnormal.positive.min, - kBit.f64.subnormal.positive.max, + kBit.f64.positive.subnormal.min, + kBit.f64.positive.subnormal.max, counts.pos_sub ), @@ -1110,13 +1243,16 @@ const kInterestingF32Values = [ kValue.f32.negative.min, -10.0, -1.0, + -0.125, kValue.f32.negative.max, - kValue.f32.subnormal.negative.min, - kValue.f32.subnormal.negative.max, + kValue.f32.negative.subnormal.min, + kValue.f32.negative.subnormal.max, + -0.0, 0.0, - kValue.f32.subnormal.positive.min, - kValue.f32.subnormal.positive.max, + kValue.f32.positive.subnormal.min, + kValue.f32.positive.subnormal.max, kValue.f32.positive.min, + 0.125, 1.0, 10.0, kValue.f32.positive.max, @@ -1361,13 +1497,16 @@ const kInterestingF16Values = [ kValue.f16.negative.min, -10.0, -1.0, + -0.125, kValue.f16.negative.max, - kValue.f16.subnormal.negative.min, - kValue.f16.subnormal.negative.max, + kValue.f16.negative.subnormal.min, + kValue.f16.negative.subnormal.max, + -0.0, 0.0, - kValue.f16.subnormal.positive.min, - kValue.f16.subnormal.positive.max, + kValue.f16.positive.subnormal.min, + kValue.f16.positive.subnormal.max, kValue.f16.positive.min, + 0.125, 1.0, 10.0, kValue.f16.positive.max, @@ -1607,6 +1746,260 @@ export function sparseMatrixF16Range(c, r) { return kSparseMatrixF16Values[c][r]; } +/** Short list of f64 values of interest to test against */ +const kInterestingF64Values = [ + kValue.f64.negative.min, + -10.0, + -1.0, + -0.125, + kValue.f64.negative.max, + kValue.f64.negative.subnormal.min, + kValue.f64.negative.subnormal.max, + -0.0, + 0.0, + kValue.f64.positive.subnormal.min, + kValue.f64.positive.subnormal.max, + kValue.f64.positive.min, + 0.125, + 1.0, + 10.0, + kValue.f64.positive.max, +]; + +/** @returns minimal F64 values that cover the entire range of F64 behaviours + * + * Has specially selected values that cover edge cases, normals, and subnormals. + * This is used instead of fullF64Range when the number of test cases being + * generated is a super linear function of the length of F64 values which is + * leading to time outs. + * + * These values have been chosen to attempt to test the widest range of F64 + * behaviours in the lowest number of entries, so may potentially miss function + * specific values of interest. If there are known values of interest they + * should be appended to this list in the test generation code. + */ +export function sparseF64Range() { + return kInterestingF64Values; +} + +const kVectorF64Values = { + 2: sparseF64Range().flatMap(f => [ + [f, 1.0], + [1.0, f], + [f, -1.0], + [-1.0, f], + ]), + + 3: sparseF64Range().flatMap(f => [ + [f, 1.0, 2.0], + [1.0, f, 2.0], + [1.0, 2.0, f], + [f, -1.0, -2.0], + [-1.0, f, -2.0], + [-1.0, -2.0, f], + ]), + + 4: sparseF64Range().flatMap(f => [ + [f, 1.0, 2.0, 3.0], + [1.0, f, 2.0, 3.0], + [1.0, 2.0, f, 3.0], + [1.0, 2.0, 3.0, f], + [f, -1.0, -2.0, -3.0], + [-1.0, f, -2.0, -3.0], + [-1.0, -2.0, f, -3.0], + [-1.0, -2.0, -3.0, f], + ]), +}; + +/** + * Returns set of vectors, indexed by dimension containing interesting float + * values. + * + * The tests do not do the simple option for coverage of computing the cartesian + * product of all of the interesting float values N times for vecN tests, + * because that creates a huge number of tests for vec3 and vec4, leading to + * time outs. + * + * Instead they insert the interesting F64 values into each location of the + * vector to get a spread of testing over the entire range. This reduces the + * number of cases being run substantially, but maintains coverage. + */ +export function vectorF64Range(dim) { + assert(dim === 2 || dim === 3 || dim === 4, 'vectorF64Range only accepts dimensions 2, 3, and 4'); + return kVectorF64Values[dim]; +} + +const kSparseVectorF64Values = { + 2: sparseF64Range().map((f, idx) => [idx % 2 === 0 ? f : idx, idx % 2 === 1 ? f : -idx]), + 3: sparseF64Range().map((f, idx) => [ + idx % 3 === 0 ? f : idx, + idx % 3 === 1 ? f : -idx, + idx % 3 === 2 ? f : idx, + ]), + + 4: sparseF64Range().map((f, idx) => [ + idx % 4 === 0 ? f : idx, + idx % 4 === 1 ? f : -idx, + idx % 4 === 2 ? f : idx, + idx % 4 === 3 ? f : -idx, + ]), +}; + +/** + * Minimal set of vectors, indexed by dimension, that contain interesting f64 + * values. + * + * This is an even more stripped down version of `vectorF64Range` for when + * pairs of vectors are being tested. + * All the interesting floats from sparseF64 are guaranteed to be tested, but + * not in every position. + */ +export function sparseVectorF64Range(dim) { + assert( + dim === 2 || dim === 3 || dim === 4, + 'sparseVectorF64Range only accepts dimensions 2, 3, and 4' + ); + + return kSparseVectorF64Values[dim]; +} + +const kSparseMatrixF64Values = { + 2: { + 2: kInterestingF64Values.map((f, idx) => [ + [idx % 4 === 0 ? f : idx, idx % 4 === 1 ? f : -idx], + [idx % 4 === 2 ? f : -idx, idx % 4 === 3 ? f : idx], + ]), + + 3: kInterestingF64Values.map((f, idx) => [ + [idx % 6 === 0 ? f : idx, idx % 6 === 1 ? f : -idx, idx % 6 === 2 ? f : idx], + [idx % 6 === 3 ? f : -idx, idx % 6 === 4 ? f : idx, idx % 6 === 5 ? f : -idx], + ]), + + 4: kInterestingF64Values.map((f, idx) => [ + [ + idx % 8 === 0 ? f : idx, + idx % 8 === 1 ? f : -idx, + idx % 8 === 2 ? f : idx, + idx % 8 === 3 ? f : -idx, + ], + + [ + idx % 8 === 4 ? f : -idx, + idx % 8 === 5 ? f : idx, + idx % 8 === 6 ? f : -idx, + idx % 8 === 7 ? f : idx, + ], + ]), + }, + 3: { + 2: kInterestingF64Values.map((f, idx) => [ + [idx % 6 === 0 ? f : idx, idx % 6 === 1 ? f : -idx], + [idx % 6 === 2 ? f : -idx, idx % 6 === 3 ? f : idx], + [idx % 6 === 4 ? f : idx, idx % 6 === 5 ? f : -idx], + ]), + + 3: kInterestingF64Values.map((f, idx) => [ + [idx % 9 === 0 ? f : idx, idx % 9 === 1 ? f : -idx, idx % 9 === 2 ? f : idx], + [idx % 9 === 3 ? f : -idx, idx % 9 === 4 ? f : idx, idx % 9 === 5 ? f : -idx], + [idx % 9 === 6 ? f : idx, idx % 9 === 7 ? f : -idx, idx % 9 === 8 ? f : idx], + ]), + + 4: kInterestingF64Values.map((f, idx) => [ + [ + idx % 12 === 0 ? f : idx, + idx % 12 === 1 ? f : -idx, + idx % 12 === 2 ? f : idx, + idx % 12 === 3 ? f : -idx, + ], + + [ + idx % 12 === 4 ? f : -idx, + idx % 12 === 5 ? f : idx, + idx % 12 === 6 ? f : -idx, + idx % 12 === 7 ? f : idx, + ], + + [ + idx % 12 === 8 ? f : idx, + idx % 12 === 9 ? f : -idx, + idx % 12 === 10 ? f : idx, + idx % 12 === 11 ? f : -idx, + ], + ]), + }, + 4: { + 2: kInterestingF64Values.map((f, idx) => [ + [idx % 8 === 0 ? f : idx, idx % 8 === 1 ? f : -idx], + [idx % 8 === 2 ? f : -idx, idx % 8 === 3 ? f : idx], + [idx % 8 === 4 ? f : idx, idx % 8 === 5 ? f : -idx], + [idx % 8 === 6 ? f : -idx, idx % 8 === 7 ? f : idx], + ]), + + 3: kInterestingF64Values.map((f, idx) => [ + [idx % 12 === 0 ? f : idx, idx % 12 === 1 ? f : -idx, idx % 12 === 2 ? f : idx], + [idx % 12 === 3 ? f : -idx, idx % 12 === 4 ? f : idx, idx % 12 === 5 ? f : -idx], + [idx % 12 === 6 ? f : idx, idx % 12 === 7 ? f : -idx, idx % 12 === 8 ? f : idx], + [idx % 12 === 9 ? f : -idx, idx % 12 === 10 ? f : idx, idx % 12 === 11 ? f : -idx], + ]), + + 4: kInterestingF64Values.map((f, idx) => [ + [ + idx % 16 === 0 ? f : idx, + idx % 16 === 1 ? f : -idx, + idx % 16 === 2 ? f : idx, + idx % 16 === 3 ? f : -idx, + ], + + [ + idx % 16 === 4 ? f : -idx, + idx % 16 === 5 ? f : idx, + idx % 16 === 6 ? f : -idx, + idx % 16 === 7 ? f : idx, + ], + + [ + idx % 16 === 8 ? f : idx, + idx % 16 === 9 ? f : -idx, + idx % 16 === 10 ? f : idx, + idx % 16 === 11 ? f : -idx, + ], + + [ + idx % 16 === 12 ? f : -idx, + idx % 16 === 13 ? f : idx, + idx % 16 === 14 ? f : -idx, + idx % 16 === 15 ? f : idx, + ], + ]), + }, +}; + +/** + * Returns a minimal set of matrices, indexed by dimension containing interesting + * float values. + * + * This is the matrix analogue of `sparseVectorF64Range`, so it is producing a + * minimal coverage set of matrices that test all the interesting f64 values. + * There is not a more expansive set of matrices, since matrices are even more + * expensive than vectors for increasing runtime with coverage. + * + * All the interesting floats from sparseF64 are guaranteed to be tested, but + * not in every position. + */ +export function sparseMatrixF64Range(c, r) { + assert( + c === 2 || c === 3 || c === 4, + 'sparseMatrixF64Range only accepts column counts of 2, 3, and 4' + ); + + assert( + r === 2 || r === 3 || r === 4, + 'sparseMatrixF64Range only accepts row counts of 2, 3, and 4' + ); + + return kSparseMatrixF64Values[c][r]; +} + /** * @returns the result matrix in Array> type. * diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/prng.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/prng.js new file mode 100644 index 00000000000..791af58b22f --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/prng.js @@ -0,0 +1,123 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { assert } from '../../common/util/util.js'; +import { kValue } from './constants.js'; + +/** + * Seed-able deterministic pseudo random generator for the WebGPU CTS + * + * This generator requires setting a seed value and the sequence of values + * generated is deterministic based on the seed. + * + * This generator is intended to be a replacement for Math.random(). + * + * This generator is not cryptographically secure, though nothing in the CTS + * should be needing cryptographic security. + * + * The current implementation is based on TinyMT + * (https://github.com/MersenneTwister-Lab/TinyMT), which is a version of + * Mersenne Twister that has reduced the internal state size at the cost of + * shortening the period length of the generated sequence. The period is still + * 2^127 - 1 entries long, so should be sufficient for use in the CTS, but it is + * less costly to create multiple instances of the class. + */ +export class PRNG { + // Storing variables for temper() as members, so they don't need to be + // reallocated per call to temper() + + // Storing variables for next() as members, so they don't need to be + // reallocated per call to next() + + // Generator internal state + + // Default tuning parameters for TinyMT. + // These are tested to not generate an all zero initial state. + static kMat1 = 0x8f7011ee; + static kMat2 = 0xfc78ff1f; + static kTMat = 0x3793fdff; + + // TinyMT algorithm internal magic numbers + static kMask = 0x7fffffff; + static kMinLoop = 8; + static kPreLoop = 8; + static kSH0 = 1; + static kSH1 = 10; + static kSH8 = 8; + + // u32.max + 1, used to scale the u32 value from temper() to [0, 1). + static kRandomDivisor = 4294967296.0; + + /** + * constructor + * + * @param seed value used to initialize random number sequence. Results are + * guaranteed to be deterministic based on this. + * This value must be in the range of unsigned 32-bit integers. + * Non-integers will be rounded. + */ + constructor(seed) { + assert(seed >= 0 && seed <= kValue.u32.max, 'seed to PRNG needs to a u32'); + + this.t_vars = new Uint32Array(2); + this.n_vars = new Uint32Array(2); + + this.state = new Uint32Array([Math.round(seed), PRNG.kMat1, PRNG.kMat2, PRNG.kTMat]); + for (let i = 1; i < PRNG.kMinLoop; i++) { + this.state[i & 3] ^= + i + Math.imul(1812433253, this.state[(i - 1) & 3] ^ (this.state[(i - 1) & 3] >>> 30)); + } + + // Check that the initial state isn't all 0s, since the algorithm assumes + // that this never occurs + assert( + (this.state[0] & PRNG.kMask) !== 0 || + this.state[1] !== 0 || + this.state[2] !== 0 || + this.state[2] !== 0, + 'Initialization of PRNG unexpectedly generated all 0s initial state, this means the tuning parameters are bad' + ); + + for (let i = 0; i < PRNG.kPreLoop; i++) { + this.next(); + } + } + + /** Advances the internal state to the next values */ + next() { + this.n_vars[0] = (this.state[0] & PRNG.kMask) ^ this.state[1] ^ this.state[2]; + this.n_vars[1] = this.state[3]; + this.n_vars[0] ^= this.n_vars[0] << PRNG.kSH0; + this.n_vars[1] ^= (this.n_vars[1] >>> PRNG.kSH0) ^ this.n_vars[0]; + this.state[0] = this.state[1]; + this.state[1] = this.state[2]; + this.state[2] = this.n_vars[0] ^ (this.n_vars[1] << PRNG.kSH1); + this.state[3] = this.n_vars[1]; + if ((this.n_vars[1] & 1) !== 0) { + this.state[1] ^= PRNG.kMat1; + this.state[2] ^= PRNG.kMat2; + } + } + + /** @returns a 32-bit unsigned integer based on the current state */ + temper() { + this.t_vars[0] = this.state[3]; + this.t_vars[1] = this.state[0] + (this.state[2] >>> PRNG.kSH8); + this.t_vars[0] ^= this.t_vars[1]; + if ((this.t_vars[1] & 1) !== 0) { + this.t_vars[0] ^= PRNG.kTMat; + } + return this.t_vars[0]; + } + + /** @returns a value on the range of [0, 1) and advances the state */ + random() { + this.next(); + return this.temper() / PRNG.kRandomDivisor; + } + + /** @returns a 32-bit unsigned integer value and advances the state */ + randomU32() { + this.next(); + return this.temper(); + } +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/base.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/base.js index e5425c57dc3..4c331f1ff0c 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/base.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/base.js @@ -84,6 +84,15 @@ export function physicalMipSize(baseSize, format, dimension, level) { } } +/** + * Compute the "physical size" of a mip level: the size of the level, rounded up to a + * multiple of the texel block size. + */ +export function physicalMipSizeFromTexture(texture, mipLevel) { + const size = physicalMipSize(texture, texture.format, texture.dimension, mipLevel); + return [size.width, size.height, size.depthOrArrayLayers]; +} + /** * Compute the "virtual size" of a mip level of a texture (not accounting for texel block rounding). * @@ -197,3 +206,18 @@ export function reifyTextureViewDescriptor(textureDescriptor, view) { arrayLayerCount, }; } + +/** + * Get generator of all the coordinates in a subrect. + * @param subrectOrigin - Subrect origin + * @param subrectSize - Subrect size + */ +export function* fullSubrectCoordinates(subrectOrigin, subrectSize) { + for (let z = subrectOrigin.z; z < subrectOrigin.z + subrectSize.depthOrArrayLayers; ++z) { + for (let y = subrectOrigin.y; y < subrectOrigin.y + subrectSize.height; ++y) { + for (let x = subrectOrigin.x; x < subrectOrigin.x + subrectSize.width; ++x) { + yield { x, y, z }; + } + } + } +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.js index e98fb72c148..5896d594bc1 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.js @@ -15,9 +15,11 @@ import { floatBitsToNormalULPFromZero, kFloat32Format, kFloat16Format, + kUFloat9e5Format, numberToFloat32Bits, float32BitsToNumber, numberToFloatBits, + ufloatM9E5BitsToNumber, } from '../conversion.js'; import { clamp, signExtend } from '../math.js'; @@ -420,6 +422,10 @@ function makeNormalizedInfo(componentOrder, bitLength, opt) { */ function makeIntegerInfo(componentOrder, bitLength, opt) { assert(bitLength <= 32); + const numericRange = opt.signed + ? { min: -(2 ** (bitLength - 1)), max: 2 ** (bitLength - 1) - 1 } + : { min: 0, max: 2 ** bitLength - 1 }; + const maxUnsignedValue = 2 ** bitLength; const encode = applyEach( n => (assertInIntegerRange(n, bitLength, opt.signed), n), componentOrder @@ -430,6 +436,12 @@ function makeIntegerInfo(componentOrder, bitLength, opt) { componentOrder ); + const bitsToNumber = applyEach(n => { + const decodedN = opt.signed ? (n > numericRange.max ? n - maxUnsignedValue : n) : n; + assertInIntegerRange(decodedN, bitLength, opt.signed); + return decodedN; + }, componentOrder); + let bitsToULPFromZero; if (opt.signed) { bitsToULPFromZero = applyEach(n => signExtend(n, bitLength), componentOrder); @@ -450,11 +462,9 @@ function makeIntegerInfo(componentOrder, bitLength, opt) { pack: components => packComponents(componentOrder, components, bitLength, dataType), unpackBits: data => unpackComponentsBits(componentOrder, data, bitLength), numberToBits: applyEach(v => v & bitMask, componentOrder), - bitsToNumber: decode, + bitsToNumber, bitsToULPFromZero, - numericRange: opt.signed - ? { min: -(2 ** (bitLength - 1)), max: 2 ** (bitLength - 1) - 1 } - : { min: 0, max: 2 ** bitLength - 1 }, + numericRange, }; } @@ -549,7 +559,6 @@ const identity = n => n; const kFloat11Format = { signed: 0, exponentBits: 5, mantissaBits: 6, bias: 15 }; const kFloat10Format = { signed: 0, exponentBits: 5, mantissaBits: 5, bias: 15 }; -const kFloat9e5Format = { signed: 0, exponentBits: 5, mantissaBits: 9, bias: 15 }; export const kTexelRepresentationInfo = { ...{ @@ -588,6 +597,58 @@ export const kTexelRepresentationInfo = { rgba32float: makeFloatInfo(kRGBA, 32), }, ...{ + rgb10a2uint: { + componentOrder: kRGBA, + componentInfo: { + R: { dataType: 'uint', bitLength: 10 }, + G: { dataType: 'uint', bitLength: 10 }, + B: { dataType: 'uint', bitLength: 10 }, + A: { dataType: 'uint', bitLength: 2 }, + }, + encode: components => { + assertInIntegerRange(components.R, 10, false); + assertInIntegerRange(components.G, 10, false); + assertInIntegerRange(components.B, 10, false); + assertInIntegerRange(components.A, 2, false); + return components; + }, + decode: components => { + assertInIntegerRange(components.R, 10, false); + assertInIntegerRange(components.G, 10, false); + assertInIntegerRange(components.B, 10, false); + assertInIntegerRange(components.A, 2, false); + return components; + }, + pack: components => + packComponents( + kRGBA, + components, + { + R: 10, + G: 10, + B: 10, + A: 2, + }, + 'uint' + ), + + unpackBits: data => unpackComponentsBits(kRGBA, data, { R: 10, G: 10, B: 10, A: 2 }), + numberToBits: components => ({ + R: components.R & 0x3ff, + G: components.G & 0x3ff, + B: components.B & 0x3ff, + A: components.A & 0x3, + }), + bitsToNumber: components => { + assertInIntegerRange(components.R, 10, false); + assertInIntegerRange(components.G, 10, false); + assertInIntegerRange(components.B, 10, false); + assertInIntegerRange(components.A, 2, false); + return components; + }, + bitsToULPFromZero: components => components, + numericRange: null, + }, rgb10a2unorm: { componentOrder: kRGBA, componentInfo: { @@ -701,14 +762,16 @@ export const kTexelRepresentationInfo = { components.B ?? unreachable() ), ]).buffer, - // For the purpose of unpacking, expand into three "ufloat14" values. unpackBits: data => { - // Pretend the exponent part is A so we can use unpackComponentsBits. - const parts = unpackComponentsBits(kRGBA, data, { R: 9, G: 9, B: 9, A: 5 }); + const encoded = (data[3] << 24) | (data[2] << 16) | (data[1] << 8) | data[0]; + const redMantissa = (encoded >>> 0) & 0b111111111; + const greenMantissa = (encoded >>> 9) & 0b111111111; + const blueMantissa = (encoded >>> 18) & 0b111111111; + const exponentSharedBits = ((encoded >>> 27) & 0b11111) << 9; return { - R: (parts.A << 9) | parts.R, - G: (parts.A << 9) | parts.G, - B: (parts.A << 9) | parts.B, + R: exponentSharedBits | redMantissa, + G: exponentSharedBits | greenMantissa, + B: exponentSharedBits | blueMantissa, }; }, numberToBits: components => ({ @@ -717,14 +780,14 @@ export const kTexelRepresentationInfo = { B: float32ToFloatBits(components.B ?? unreachable(), 0, 5, 9, 15), }), bitsToNumber: components => ({ - R: floatBitsToNumber(components.R, kFloat9e5Format), - G: floatBitsToNumber(components.G, kFloat9e5Format), - B: floatBitsToNumber(components.B, kFloat9e5Format), + R: ufloatM9E5BitsToNumber(components.R, kUFloat9e5Format), + G: ufloatM9E5BitsToNumber(components.G, kUFloat9e5Format), + B: ufloatM9E5BitsToNumber(components.B, kUFloat9e5Format), }), bitsToULPFromZero: components => ({ - R: floatBitsToNormalULPFromZero(components.R, kFloat9e5Format), - G: floatBitsToNormalULPFromZero(components.G, kFloat9e5Format), - B: floatBitsToNormalULPFromZero(components.B, kFloat9e5Format), + R: floatBitsToNormalULPFromZero(components.R, kUFloat9e5Format), + G: floatBitsToNormalULPFromZero(components.G, kUFloat9e5Format), + B: floatBitsToNormalULPFromZero(components.B, kUFloat9e5Format), }), numericRange: { min: 0, max: Number.POSITIVE_INFINITY }, }, @@ -822,7 +885,7 @@ export function getSingleDataType(format) { } /** - * Get traits for generating code to readback data from a component. + * Get traits for generating code to readback data from a component. * @param {ComponentDataType} dataType - The input component data type. * @returns A dictionary containing the respective `ReadbackTypedArray` and `shaderType`. */ diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.spec.js index c4d20599d1e..a4bdb34b186 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_data.spec.js @@ -143,6 +143,9 @@ g.test('unorm_texel_data_in_shader') ]; }) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.format); + }) .fn(doTest); g.test('snorm_texel_data_in_shader') diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_view.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_view.js index d075f254752..1bfee89f71f 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_view.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texel_view.js @@ -2,8 +2,10 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { assert, memcpy } from '../../../common/util/util.js'; import { kTextureFormatInfo } from '../../format_info.js'; +import { generatePrettyTable } from '../pretty_diff_tables.js'; import { reifyExtent3D, reifyOrigin3D } from '../unions.js'; +import { fullSubrectCoordinates } from './base.js'; import { kTexelRepresentationInfo, makeClampToRange } from './texel_data.js'; /** Function taking some x,y,z coordinates and returning `Readonly`. */ @@ -119,4 +121,41 @@ export class TexelView { } } } + + /** Returns a pretty table string of the given coordinates and their values. */ + // MAINTENANCE_TODO: Unify some internal helpers with those in texture_ok.ts. + toString(subrectOrigin, subrectSize) { + const info = kTextureFormatInfo[this.format]; + const repr = kTexelRepresentationInfo[this.format]; + + const integerSampleType = info.sampleType === 'uint' || info.sampleType === 'sint'; + const numberToString = integerSampleType ? n => n.toFixed() : n => n.toPrecision(6); + + const componentOrderStr = repr.componentOrder.join(',') + ':'; + const subrectCoords = [...fullSubrectCoordinates(subrectOrigin, subrectSize)]; + + const printCoords = (function* () { + yield* [' coords', '==', 'X,Y,Z:']; + for (const coords of subrectCoords) yield `${coords.x},${coords.y},${coords.z}`; + })(); + const printActualBytes = (function* (t) { + yield* [' act. texel bytes (little-endian)', '==', '0x:']; + for (const coords of subrectCoords) { + yield Array.from(t.bytes(coords), b => b.toString(16).padStart(2, '0')).join(' '); + } + })(this); + const printActualColors = (function* (t) { + yield* [' act. colors', '==', componentOrderStr]; + for (const coords of subrectCoords) { + const pixel = t.color(coords); + yield `${repr.componentOrder.map(ch => numberToString(pixel[ch])).join(',')}`; + } + })(this); + + const opts = { + fillToWidth: 120, + numberToString, + }; + return `${generatePrettyTable(opts, [printCoords, printActualBytes, printActualColors])}`; + } } diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texture_ok.js b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texture_ok.js index 0803046ddb4..bd329bac443 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texture_ok.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/util/texture/texture_ok.js @@ -2,9 +2,11 @@ * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ import { assert, ErrorWithExtra, unreachable } from '../../../common/util/util.js'; import { kTextureFormatInfo } from '../../format_info.js'; +import { numbersApproximatelyEqual } from '../conversion.js'; import { generatePrettyTable } from '../pretty_diff_tables.js'; import { reifyExtent3D, reifyOrigin3D } from '../unions.js'; +import { fullSubrectCoordinates } from './base.js'; import { getTextureSubCopyLayout } from './layout.js'; import { kTexelRepresentationInfo } from './texel_data.js'; import { TexelView } from './texel_view.js'; @@ -120,7 +122,7 @@ function comparePerComponent(actual, expected, maxDiff) { const act = actual[k]; const exp = expected[k]; if (exp === undefined) return false; - return Math.abs(act - exp) <= maxDiff; + return numbersApproximatelyEqual(act, exp, maxDiff); }); } @@ -143,17 +145,7 @@ function createTextureCopyForMapRead(t, source, copySize, { format }) { return { buffer, bytesPerRow, rowsPerImage }; } -function* fullSubrectCoordinates(subrectOrigin, subrectSize) { - for (let z = subrectOrigin.z; z < subrectOrigin.z + subrectSize.depthOrArrayLayers; ++z) { - for (let y = subrectOrigin.y; y < subrectOrigin.y + subrectSize.height; ++y) { - for (let x = subrectOrigin.x; x < subrectOrigin.x + subrectSize.width; ++x) { - yield { x, y, z }; - } - } - } -} - -function findFailedPixels( +export function findFailedPixels( format, subrectOrigin, subrectSize, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js index d01afc2d7b6..171f8036c3d 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js @@ -396,6 +396,9 @@ g.test('viewFormats') }) .fn(t => { const { canvasType, format, viewFormat } = t.params; + + t.skipIfTextureFormatNotSupported(viewFormat); + const canvas = createCanvas(t, canvasType, 1, 1); const ctx = canvas.getContext('webgpu'); assert(ctx instanceof GPUCanvasContext, 'Failed to get WebGPU context from canvas'); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js index cbd40eeb81e..2f7677a492f 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js @@ -15,39 +15,7 @@ import { makeTestGroup } from '../../../common/framework/test_group.js'; import { kTextureFormatInfo, kValidTextureFormatsForCopyE2T } from '../../format_info.js'; import { CopyToTextureUtils, kCopySubrectInfo } from '../../util/copy_to_texture.js'; -import { TexelView } from '../../util/texture/texel_view.js'; - -// None of the dst texture format is 'uint' or 'sint', so we can always use float value. -const kColors = { - Red: { R: 1.0, G: 0.0, B: 0.0, A: 1.0 }, - Green: { R: 0.0, G: 1.0, B: 0.0, A: 1.0 }, - Blue: { R: 0.0, G: 0.0, B: 1.0, A: 1.0 }, - Black: { R: 0.0, G: 0.0, B: 0.0, A: 1.0 }, - White: { R: 1.0, G: 1.0, B: 1.0, A: 1.0 }, - SemitransparentWhite: { R: 1.0, G: 1.0, B: 1.0, A: 0.6 }, -}; -const kTestColorsOpaque = [kColors.Red, kColors.Green, kColors.Blue, kColors.Black, kColors.White]; - -const kTestColorsAll = [...kTestColorsOpaque, kColors.SemitransparentWhite]; - -function makeTestColorsTexelView({ testColors, format, width, height, premultiplied, flipY }) { - return TexelView.fromTexelsAsColors(format, coords => { - const y = flipY ? height - coords.y - 1 : coords.y; - const pixelPos = y * width + coords.x; - const currentPixel = testColors[pixelPos % testColors.length]; - - if (premultiplied && currentPixel.A !== 1.0) { - return { - R: currentPixel.R * currentPixel.A, - G: currentPixel.G * currentPixel.A, - B: currentPixel.B * currentPixel.A, - A: currentPixel.A, - }; - } else { - return currentPixel; - } - }); -} +import { kTestColorsAll, kTestColorsOpaque, makeTestColorsTexelView } from './util.js'; export const g = makeTestGroup(CopyToTextureUtils); @@ -71,10 +39,10 @@ g.test('from_ImageData') is flipped. The tests covers: - - Valid dstColorFormat of copyExternalImageToTexture() + - Valid dstFormat of copyExternalImageToTexture() - Valid source image alphaMode - Valid dest alphaMode - - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcFlipYInCopy' in cases) And the expected results are all passed. ` @@ -83,22 +51,27 @@ g.test('from_ImageData') u .combine('alpha', ['none', 'premultiply']) .combine('orientation', ['none', 'flipY']) - .combine('srcDoFlipYDuringCopy', [true, false]) - .combine('dstColorFormat', kValidTextureFormatsForCopyE2T) + .combine('colorSpaceConversion', ['none', 'default']) + .combine('srcFlipYInCopy', [true, false]) + .combine('dstFormat', kValidTextureFormatsForCopyE2T) .combine('dstPremultiplied', [true, false]) .beginSubcases() .combine('width', [1, 2, 4, 15, 255, 256]) .combine('height', [1, 2, 4, 15, 255, 256]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstFormat); + }) .fn(async t => { const { width, height, alpha, orientation, - dstColorFormat, + colorSpaceConversion, + dstFormat, dstPremultiplied, - srcDoFlipYDuringCopy, + srcFlipYInCopy, } = t.params; const testColors = kTestColorsAll; @@ -123,16 +96,17 @@ g.test('from_ImageData') const imageBitmap = await createImageBitmap(imageData, { premultiplyAlpha: alpha, imageOrientation: orientation, + colorSpaceConversion, }); const dst = t.device.createTexture({ size: { width, height }, - format: dstColorFormat, + format: dstFormat, usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, }); - const expFormat = kTextureFormatInfo[dstColorFormat].baseFormat ?? dstColorFormat; + const expFormat = kTextureFormatInfo[dstFormat].baseFormat ?? dstFormat; const flipSrcBeforeCopy = orientation === 'flipY'; const texelViewExpected = t.getExpectedDstPixelsFromSrcPixels({ srcPixels: imageData.data, @@ -143,7 +117,7 @@ g.test('from_ImageData') subRectSize: [width, height], format: expFormat, flipSrcBeforeCopy, - srcDoFlipYDuringCopy, + srcDoFlipYDuringCopy: srcFlipYInCopy, conversion: { srcPremultiplied: false, dstPremultiplied, @@ -151,7 +125,7 @@ g.test('from_ImageData') }); t.doTestAndCheckResult( - { source: imageBitmap, origin: { x: 0, y: 0 }, flipY: srcDoFlipYDuringCopy }, + { source: imageBitmap, origin: { x: 0, y: 0 }, flipY: srcFlipYInCopy }, { texture: dst, origin: { x: 0, y: 0 }, @@ -186,10 +160,10 @@ g.test('from_canvas') The tests covers: - Valid 2D canvas - - Valid dstColorFormat of copyExternalImageToTexture() + - Valid dstFormat of copyExternalImageToTexture() - Valid source image alphaMode - Valid dest alphaMode - - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcFlipYInCopy' in cases) And the expected results are all passed. ` @@ -197,21 +171,26 @@ g.test('from_canvas') .params(u => u .combine('orientation', ['none', 'flipY']) - .combine('srcDoFlipYDuringCopy', [true, false]) - .combine('dstColorFormat', kValidTextureFormatsForCopyE2T) + .combine('colorSpaceConversion', ['none', 'default']) + .combine('srcFlipYInCopy', [true, false]) + .combine('dstFormat', kValidTextureFormatsForCopyE2T) .combine('dstPremultiplied', [true, false]) .beginSubcases() .combine('width', [1, 2, 4, 15, 255, 256]) .combine('height', [1, 2, 4, 15, 255, 256]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstFormat); + }) .fn(async t => { const { width, height, orientation, - dstColorFormat, + colorSpaceConversion, + dstFormat, dstPremultiplied, - srcDoFlipYDuringCopy, + srcFlipYInCopy, } = t.params; // CTS sometimes runs on worker threads, where document is not available. @@ -264,16 +243,17 @@ g.test('from_canvas') const imageBitmap = await createImageBitmap(imageCanvas, { premultiplyAlpha: 'premultiply', imageOrientation: orientation, + colorSpaceConversion, }); const dst = t.device.createTexture({ size: { width, height }, - format: dstColorFormat, + format: dstFormat, usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, }); - const expFormat = kTextureFormatInfo[dstColorFormat].baseFormat ?? dstColorFormat; + const expFormat = kTextureFormatInfo[dstFormat].baseFormat ?? dstFormat; const flipSrcBeforeCopy = orientation === 'flipY'; const texelViewExpected = t.getExpectedDstPixelsFromSrcPixels({ srcPixels: imageData.data, @@ -284,7 +264,7 @@ g.test('from_canvas') subRectSize: [width, height], format: expFormat, flipSrcBeforeCopy, - srcDoFlipYDuringCopy, + srcDoFlipYDuringCopy: srcFlipYInCopy, conversion: { srcPremultiplied: false, dstPremultiplied, @@ -292,7 +272,7 @@ g.test('from_canvas') }); t.doTestAndCheckResult( - { source: imageBitmap, origin: { x: 0, y: 0 }, flipY: srcDoFlipYDuringCopy }, + { source: imageBitmap, origin: { x: 0, y: 0 }, flipY: srcFlipYInCopy }, { texture: dst, origin: { x: 0, y: 0 }, @@ -328,10 +308,10 @@ g.test('copy_subrect_from_ImageData') The tests covers: - Source WebGPU Canvas lives in the same GPUDevice or different GPUDevice as test - - Valid dstColorFormat of copyExternalImageToTexture() + - Valid dstFormat of copyExternalImageToTexture() - Valid source image alphaMode - Valid dest alphaMode - - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcFlipYInCopy' in cases) - Valid subrect copies. And the expected results are all passed. @@ -341,7 +321,8 @@ g.test('copy_subrect_from_ImageData') u .combine('alpha', ['none', 'premultiply']) .combine('orientation', ['none', 'flipY']) - .combine('srcDoFlipYDuringCopy', [true, false]) + .combine('colorSpaceConversion', ['none', 'default']) + .combine('srcFlipYInCopy', [true, false]) .combine('dstPremultiplied', [true, false]) .beginSubcases() .combine('copySubRectInfo', kCopySubrectInfo) @@ -351,8 +332,9 @@ g.test('copy_subrect_from_ImageData') copySubRectInfo, alpha, orientation, + colorSpaceConversion, dstPremultiplied, - srcDoFlipYDuringCopy, + srcFlipYInCopy, } = t.params; const testColors = kTestColorsAll; @@ -379,6 +361,7 @@ g.test('copy_subrect_from_ImageData') const imageBitmap = await createImageBitmap(imageData, { premultiplyAlpha: alpha, imageOrientation: orientation, + colorSpaceConversion, }); const dst = t.device.createTexture({ @@ -398,7 +381,7 @@ g.test('copy_subrect_from_ImageData') subRectSize: copyExtent, format: kColorFormat, flipSrcBeforeCopy, - srcDoFlipYDuringCopy, + srcDoFlipYDuringCopy: srcFlipYInCopy, conversion: { srcPremultiplied: false, dstPremultiplied, @@ -406,7 +389,7 @@ g.test('copy_subrect_from_ImageData') }); t.doTestAndCheckResult( - { source: imageBitmap, origin: srcOrigin, flipY: srcDoFlipYDuringCopy }, + { source: imageBitmap, origin: srcOrigin, flipY: srcFlipYInCopy }, { texture: dst, origin: dstOrigin, @@ -442,10 +425,10 @@ g.test('copy_subrect_from_2D_Canvas') The tests covers: - Source WebGPU Canvas lives in the same GPUDevice or different GPUDevice as test - - Valid dstColorFormat of copyExternalImageToTexture() + - Valid dstFormat of copyExternalImageToTexture() - Valid source image alphaMode - Valid dest alphaMode - - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcFlipYInCopy' in cases) - Valid subrect copies. And the expected results are all passed. @@ -454,13 +437,20 @@ g.test('copy_subrect_from_2D_Canvas') .params(u => u .combine('orientation', ['none', 'flipY']) - .combine('srcDoFlipYDuringCopy', [true, false]) + .combine('colorSpaceConversion', ['none', 'default']) + .combine('srcFlipYInCopy', [true, false]) .combine('dstPremultiplied', [true, false]) .beginSubcases() .combine('copySubRectInfo', kCopySubrectInfo) ) .fn(async t => { - const { copySubRectInfo, orientation, dstPremultiplied, srcDoFlipYDuringCopy } = t.params; + const { + copySubRectInfo, + orientation, + colorSpaceConversion, + dstPremultiplied, + srcFlipYInCopy, + } = t.params; const { srcOrigin, dstOrigin, srcSize, dstSize, copyExtent } = copySubRectInfo; const kColorFormat = 'rgba8unorm'; @@ -515,6 +505,7 @@ g.test('copy_subrect_from_2D_Canvas') const imageBitmap = await createImageBitmap(imageCanvas, { premultiplyAlpha: 'premultiply', imageOrientation: orientation, + colorSpaceConversion, }); const dst = t.device.createTexture({ @@ -534,7 +525,7 @@ g.test('copy_subrect_from_2D_Canvas') subRectSize: copyExtent, format: kColorFormat, flipSrcBeforeCopy, - srcDoFlipYDuringCopy, + srcDoFlipYDuringCopy: srcFlipYInCopy, conversion: { srcPremultiplied: false, dstPremultiplied, @@ -542,7 +533,7 @@ g.test('copy_subrect_from_2D_Canvas') }); t.doTestAndCheckResult( - { source: imageBitmap, origin: srcOrigin, flipY: srcDoFlipYDuringCopy }, + { source: imageBitmap, origin: srcOrigin, flipY: srcFlipYInCopy }, { texture: dst, origin: dstOrigin, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageData.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageData.spec.js new file mode 100644 index 00000000000..fc0bbc51cf4 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/ImageData.spec.js @@ -0,0 +1,222 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +copyExternalImageToTexture from ImageData source. +`; +import { makeTestGroup } from '../../../common/framework/test_group.js'; +import { kTextureFormatInfo, kValidTextureFormatsForCopyE2T } from '../../format_info.js'; +import { CopyToTextureUtils, kCopySubrectInfo } from '../../util/copy_to_texture.js'; + +import { kTestColorsAll, makeTestColorsTexelView } from './util.js'; + +export const g = makeTestGroup(CopyToTextureUtils); + +g.test('from_ImageData') + .desc( + ` + Test ImageData can be copied to WebGPU + texture correctly. These imageDatas are highly possible living + in CPU back resource. + + It generates pixels in ImageData one by one based on a color list: + [Red, Green, Blue, Black, White, SemitransparentWhite]. + + Then call copyExternalImageToTexture() to do a full copy to the 0 mipLevel + of dst texture, and read the contents out to compare with the ImageData contents. + + Expect alpha to get premultiplied in the copy if, and only if, 'premultipliedAlpha' + in 'GPUImageCopyTextureTagged' is set to 'true'. + + If 'flipY' in 'GPUImageCopyExternalImage' is set to 'true', copy will ensure the result + is flipped. + + The tests covers: + - Valid dstColorFormat of copyExternalImageToTexture() + - Valid dest alphaMode + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + + And the expected results are all passed. + ` + ) + .params(u => + u + .combine('srcDoFlipYDuringCopy', [true, false]) + .combine('dstColorFormat', kValidTextureFormatsForCopyE2T) + .combine('dstPremultiplied', [true, false]) + .beginSubcases() + .combine('width', [1, 2, 4, 15, 255, 256]) + .combine('height', [1, 2, 4, 15, 255, 256]) + ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); + }) + .fn(t => { + const { width, height, dstColorFormat, dstPremultiplied, srcDoFlipYDuringCopy } = t.params; + + const testColors = kTestColorsAll; + + // Generate correct expected values + const texelViewSource = makeTestColorsTexelView({ + testColors, + format: 'rgba8unorm', // ImageData is always in rgba8unorm format. + width, + height, + flipY: false, + premultiplied: false, + }); + const imageData = new ImageData(width, height); + texelViewSource.writeTextureData(imageData.data, { + bytesPerRow: width * 4, + rowsPerImage: height, + subrectOrigin: [0, 0], + subrectSize: { width, height }, + }); + + const dst = t.device.createTexture({ + size: { width, height }, + format: dstColorFormat, + usage: + GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, + }); + + const expFormat = kTextureFormatInfo[dstColorFormat].baseFormat ?? dstColorFormat; + const flipSrcBeforeCopy = false; + const texelViewExpected = t.getExpectedDstPixelsFromSrcPixels({ + srcPixels: imageData.data, + srcOrigin: [0, 0], + srcSize: [width, height], + dstOrigin: [0, 0], + dstSize: [width, height], + subRectSize: [width, height], + format: expFormat, + flipSrcBeforeCopy, + srcDoFlipYDuringCopy, + conversion: { + srcPremultiplied: false, + dstPremultiplied, + }, + }); + + t.doTestAndCheckResult( + { + source: imageData, + origin: { x: 0, y: 0 }, + flipY: srcDoFlipYDuringCopy, + }, + { + texture: dst, + origin: { x: 0, y: 0 }, + colorSpace: 'srgb', + premultipliedAlpha: dstPremultiplied, + }, + texelViewExpected, + { width, height, depthOrArrayLayers: 1 }, + // 1.0 and 0.6 are representable precisely by all formats except rgb10a2unorm, but + // allow diffs of 1ULP since that's the generally-appropriate threshold. + { maxDiffULPsForFloatFormat: 1, maxDiffULPsForNormFormat: 1 } + ); + }); + +g.test('copy_subrect_from_ImageData') + .desc( + ` + Test ImageData can be copied to WebGPU + texture correctly. These imageDatas are highly possible living in CPU back resource. + + It generates pixels in ImageData one by one based on a color list: + [Red, Green, Blue, Black, White]. + + Then call copyExternalImageToTexture() to do a subrect copy, based on a predefined copy + rect info list, to the 0 mipLevel of dst texture, and read the contents out to compare + with the ImageBitmap contents. + + Expect alpha to get premultiplied in the copy if, and only if, 'premultipliedAlpha' + in 'GPUImageCopyTextureTagged' is set to 'true'. + + If 'flipY' in 'GPUImageCopyExternalImage' is set to 'true', copy will ensure the result + is flipped, and origin is top-left consistantly. + + The tests covers: + - Source WebGPU Canvas lives in the same GPUDevice or different GPUDevice as test + - Valid dstColorFormat of copyExternalImageToTexture() + - Valid dest alphaMode + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + - Valid subrect copies. + + And the expected results are all passed. + ` + ) + .params(u => + u + .combine('srcDoFlipYDuringCopy', [true, false]) + .combine('dstPremultiplied', [true, false]) + .beginSubcases() + .combine('copySubRectInfo', kCopySubrectInfo) + ) + .fn(t => { + const { copySubRectInfo, dstPremultiplied, srcDoFlipYDuringCopy } = t.params; + + const testColors = kTestColorsAll; + const { srcOrigin, dstOrigin, srcSize, dstSize, copyExtent } = copySubRectInfo; + const kColorFormat = 'rgba8unorm'; + + // Generate correct expected values + const texelViewSource = makeTestColorsTexelView({ + testColors, + format: kColorFormat, // ImageData is always in rgba8unorm format. + width: srcSize.width, + height: srcSize.height, + flipY: false, + premultiplied: false, + }); + const imageData = new ImageData(srcSize.width, srcSize.height); + texelViewSource.writeTextureData(imageData.data, { + bytesPerRow: srcSize.width * 4, + rowsPerImage: srcSize.height, + subrectOrigin: [0, 0], + subrectSize: srcSize, + }); + + const dst = t.device.createTexture({ + size: dstSize, + format: kColorFormat, + usage: + GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, + }); + + const flipSrcBeforeCopy = false; + const texelViewExpected = t.getExpectedDstPixelsFromSrcPixels({ + srcPixels: imageData.data, + srcOrigin, + srcSize, + dstOrigin, + dstSize, + subRectSize: copyExtent, + format: kColorFormat, + flipSrcBeforeCopy, + srcDoFlipYDuringCopy, + conversion: { + srcPremultiplied: false, + dstPremultiplied, + }, + }); + + t.doTestAndCheckResult( + { + source: imageData, + origin: srcOrigin, + flipY: srcDoFlipYDuringCopy, + }, + { + texture: dst, + origin: dstOrigin, + colorSpace: 'srgb', + premultipliedAlpha: dstPremultiplied, + }, + texelViewExpected, + copyExtent, + // 1.0 and 0.6 are representable precisely by all formats except rgb10a2unorm, but + // allow diffs of 1ULP since that's the generally-appropriate threshold. + { maxDiffULPsForFloatFormat: 1, maxDiffULPsForNormFormat: 1 } + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js index 4eaa614e8fd..c52f7af5879 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js @@ -407,6 +407,9 @@ g.test('copy_contents_from_2d_context_canvas') .combine('width', [1, 2, 4, 15]) .combine('height', [1, 2, 4, 15]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); + }) .fn(t => { const { width, height, canvasType, dstAlphaMode } = t.params; @@ -468,6 +471,9 @@ g.test('copy_contents_from_gl_context_canvas') .combine('width', [1, 2, 4, 15]) .combine('height', [1, 2, 4, 15]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); + }) .fn(t => { const { width, height, canvasType, contextName, srcPremultiplied, dstAlphaMode } = t.params; @@ -535,6 +541,7 @@ g.test('copy_contents_from_gpu_context_canvas') .combine('height', [1, 2, 4, 15]) ) .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); t.selectMismatchedDeviceOrSkipTestCase(undefined); }) .fn(t => { @@ -605,6 +612,9 @@ g.test('copy_contents_from_bitmaprenderer_context_canvas') .combine('width', [1, 2, 4, 15]) .combine('height', [1, 2, 4, 15]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); + }) .fn(async t => { const { width, height, canvasType, dstAlphaMode } = t.params; @@ -678,6 +688,9 @@ g.test('color_space_conversion') .combine('width', [1, 2, 4, 15, 255, 256]) .combine('height', [1, 2, 4, 15, 255, 256]) ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); + }) .fn(t => { const { width, diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/image.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/image.spec.js new file mode 100644 index 00000000000..88a630a9d57 --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/image.spec.js @@ -0,0 +1,272 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ export const description = ` +copyExternalImageToTexture from HTMLImageElement source. +`; +import { makeTestGroup } from '../../../common/framework/test_group.js'; +import { raceWithRejectOnTimeout } from '../../../common/util/util.js'; +import { kTextureFormatInfo, kValidTextureFormatsForCopyE2T } from '../../format_info.js'; +import { CopyToTextureUtils, kCopySubrectInfo } from '../../util/copy_to_texture.js'; + +import { kTestColorsOpaque, makeTestColorsTexelView } from './util.js'; + +async function decodeImageFromCanvas(canvas) { + const blobFromCanvas = new Promise(resolve => { + canvas.toBlob(blob => resolve(blob)); + }); + const blob = await blobFromCanvas; + const url = URL.createObjectURL(blob); + const image = new Image(canvas.width, canvas.height); + image.src = url; + await raceWithRejectOnTimeout(image.decode(), 5000, 'decode image timeout'); + return image; +} + +export const g = makeTestGroup(CopyToTextureUtils); + +g.test('from_image') + .desc( + ` + Test HTMLImageElement can be copied to WebGPU texture correctly. + These images are highly possible living in GPU back resource. + + It generates pixels in ImageData one by one based on a color list: + [Red, Green, Blue, Black, White]. + + Then call copyExternalImageToTexture() to do a full copy to the 0 mipLevel + of dst texture, and read the contents out to compare with the HTMLImageElement contents. + + Do premultiply alpha during copy if 'premultipliedAlpha' in 'GPUImageCopyTextureTagged' + is set to 'true' and do unpremultiply alpha if it is set to 'false'. + + If 'flipY' in 'GPUImageCopyExternalImage' is set to 'true', copy will ensure the result + is flipped. + + The tests covers: + - Valid 2D canvas + - Valid dstColorFormat of copyExternalImageToTexture() + - Valid source image alphaMode + - Valid dest alphaMode + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + + And the expected results are all passed. + ` + ) + .params(u => + u + .combine('srcDoFlipYDuringCopy', [true, false]) + .combine('dstColorFormat', kValidTextureFormatsForCopyE2T) + .combine('dstPremultiplied', [true, false]) + .beginSubcases() + .combine('width', [1, 2, 4, 15, 255, 256]) + .combine('height', [1, 2, 4, 15, 255, 256]) + ) + .beforeAllSubcases(t => { + t.skipIfTextureFormatNotSupported(t.params.dstColorFormat); + if (typeof HTMLImageElement === 'undefined') t.skip('HTMLImageElement not available'); + }) + .fn(async t => { + const { width, height, dstColorFormat, dstPremultiplied, srcDoFlipYDuringCopy } = t.params; + + const imageCanvas = document.createElement('canvas'); + imageCanvas.width = width; + imageCanvas.height = height; + + // Generate non-transparent pixel data to avoid canvas + // different opt behaviour on putImageData() + // from browsers. + const texelViewSource = makeTestColorsTexelView({ + testColors: kTestColorsOpaque, + format: 'rgba8unorm', // ImageData is always in rgba8unorm format. + width, + height, + flipY: false, + premultiplied: false, + }); + // Generate correct expected values + const imageData = new ImageData(width, height); + texelViewSource.writeTextureData(imageData.data, { + bytesPerRow: width * 4, + rowsPerImage: height, + subrectOrigin: [0, 0], + subrectSize: { width, height }, + }); + + const imageCanvasContext = imageCanvas.getContext('2d'); + if (imageCanvasContext === null) { + t.skip('canvas cannot get 2d context'); + return; + } + // Use putImageData to prevent color space conversion. + imageCanvasContext.putImageData(imageData, 0, 0); + + const image = await decodeImageFromCanvas(imageCanvas); + + const dst = t.device.createTexture({ + size: { width, height }, + format: dstColorFormat, + usage: + GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, + }); + + const expFormat = kTextureFormatInfo[dstColorFormat].baseFormat ?? dstColorFormat; + const flipSrcBeforeCopy = false; + const texelViewExpected = t.getExpectedDstPixelsFromSrcPixels({ + srcPixels: imageData.data, + srcOrigin: [0, 0], + srcSize: [width, height], + dstOrigin: [0, 0], + dstSize: [width, height], + subRectSize: [width, height], + format: expFormat, + flipSrcBeforeCopy, + srcDoFlipYDuringCopy, + conversion: { + srcPremultiplied: false, + dstPremultiplied, + }, + }); + + t.doTestAndCheckResult( + { + source: image, + origin: { x: 0, y: 0 }, + flipY: srcDoFlipYDuringCopy, + }, + { + texture: dst, + origin: { x: 0, y: 0 }, + colorSpace: 'srgb', + premultipliedAlpha: dstPremultiplied, + }, + texelViewExpected, + { width, height, depthOrArrayLayers: 1 }, + // 1.0 and 0.6 are representable precisely by all formats except rgb10a2unorm, but + // allow diffs of 1ULP since that's the generally-appropriate threshold. + { maxDiffULPsForFloatFormat: 1, maxDiffULPsForNormFormat: 1 } + ); + }); + +g.test('copy_subrect_from_2D_Canvas') + .desc( + ` + Test HTMLImageElement can be copied to WebGPU texture correctly. + These images are highly possible living in GPU back resource. + + It generates pixels in ImageData one by one based on a color list: + [Red, Green, Blue, Black, White]. + + Then call copyExternalImageToTexture() to do a subrect copy, based on a predefined copy + rect info list, to the 0 mipLevel of dst texture, and read the contents out to compare + with the HTMLImageElement contents. + + Do premultiply alpha during copy if 'premultipliedAlpha' in 'GPUImageCopyTextureTagged' + is set to 'true' and do unpremultiply alpha if it is set to 'false'. + + If 'flipY' in 'GPUImageCopyExternalImage' is set to 'true', copy will ensure the result + is flipped, and origin is top-left consistantly. + + The tests covers: + - Source WebGPU Canvas lives in the same GPUDevice or different GPUDevice as test + - Valid dstColorFormat of copyExternalImageToTexture() + - Valid source image alphaMode + - Valid dest alphaMode + - Valid 'flipY' config in 'GPUImageCopyExternalImage' (named 'srcDoFlipYDuringCopy' in cases) + - Valid subrect copies. + + And the expected results are all passed. + ` + ) + .params(u => + u + .combine('srcDoFlipYDuringCopy', [true, false]) + .combine('dstPremultiplied', [true, false]) + .beginSubcases() + .combine('copySubRectInfo', kCopySubrectInfo) + ) + .beforeAllSubcases(t => { + if (typeof HTMLImageElement === 'undefined') t.skip('HTMLImageElement not available'); + }) + .fn(async t => { + const { copySubRectInfo, dstPremultiplied, srcDoFlipYDuringCopy } = t.params; + + const { srcOrigin, dstOrigin, srcSize, dstSize, copyExtent } = copySubRectInfo; + const kColorFormat = 'rgba8unorm'; + + const imageCanvas = document.createElement('canvas'); + imageCanvas.width = srcSize.width; + imageCanvas.height = srcSize.height; + + // Generate non-transparent pixel data to avoid canvas + // different opt behaviour on putImageData() + // from browsers. + const texelViewSource = makeTestColorsTexelView({ + testColors: kTestColorsOpaque, + format: 'rgba8unorm', // ImageData is always in rgba8unorm format. + width: srcSize.width, + height: srcSize.height, + flipY: false, + premultiplied: false, + }); + // Generate correct expected values + const imageData = new ImageData(srcSize.width, srcSize.height); + texelViewSource.writeTextureData(imageData.data, { + bytesPerRow: srcSize.width * 4, + rowsPerImage: srcSize.height, + subrectOrigin: [0, 0], + subrectSize: srcSize, + }); + + const imageCanvasContext = imageCanvas.getContext('2d'); + if (imageCanvasContext === null) { + t.skip('canvas cannot get 2d context'); + return; + } + // Use putImageData to prevent color space conversion. + imageCanvasContext.putImageData(imageData, 0, 0); + + const image = await decodeImageFromCanvas(imageCanvas); + + const dst = t.device.createTexture({ + size: dstSize, + format: kColorFormat, + usage: + GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT, + }); + + const flipSrcBeforeCopy = false; + const texelViewExpected = t.getExpectedDstPixelsFromSrcPixels({ + srcPixels: imageData.data, + srcOrigin, + srcSize, + dstOrigin, + dstSize, + subRectSize: copyExtent, + format: kColorFormat, + flipSrcBeforeCopy, + srcDoFlipYDuringCopy, + conversion: { + srcPremultiplied: false, + dstPremultiplied, + }, + }); + + t.doTestAndCheckResult( + { + source: image, + origin: srcOrigin, + flipY: srcDoFlipYDuringCopy, + }, + { + texture: dst, + origin: dstOrigin, + colorSpace: 'srgb', + premultipliedAlpha: dstPremultiplied, + }, + texelViewExpected, + copyExtent, + // 1.0 and 0.6 are representable precisely by all formats except rgb10a2unorm, but + // allow diffs of 1ULP since that's the generally-appropriate threshold. + { maxDiffULPsForFloatFormat: 1, maxDiffULPsForNormFormat: 1 } + ); + }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/util.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/util.js new file mode 100644 index 00000000000..2471edbfa3d --- /dev/null +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/util.js @@ -0,0 +1,49 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { TexelView } from '../../util/texture/texel_view.js'; + +// None of the dst texture format is 'uint' or 'sint', so we can always use float value. +const kColors = { + Red: { R: 1.0, G: 0.0, B: 0.0, A: 1.0 }, + Green: { R: 0.0, G: 1.0, B: 0.0, A: 1.0 }, + Blue: { R: 0.0, G: 0.0, B: 1.0, A: 1.0 }, + Black: { R: 0.0, G: 0.0, B: 0.0, A: 1.0 }, + White: { R: 1.0, G: 1.0, B: 1.0, A: 1.0 }, + SemitransparentWhite: { R: 1.0, G: 1.0, B: 1.0, A: 0.6 }, +}; + +export const kTestColorsOpaque = [ + kColors.Red, + kColors.Green, + kColors.Blue, + kColors.Black, + kColors.White, +]; + +export const kTestColorsAll = [...kTestColorsOpaque, kColors.SemitransparentWhite]; + +export function makeTestColorsTexelView({ + testColors, + format, + width, + height, + premultiplied, + flipY, +}) { + return TexelView.fromTexelsAsColors(format, coords => { + const y = flipY ? height - coords.y - 1 : coords.y; + const pixelPos = y * width + coords.x; + const currentPixel = testColors[pixelPos % testColors.length]; + + if (premultiplied && currentPixel.A !== 1.0) { + return { + R: currentPixel.R * currentPixel.A, + G: currentPixel.G * currentPixel.A, + B: currentPixel.B * currentPixel.A, + A: currentPixel.A, + }; + } else { + return currentPixel; + } + }); +} diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js index 32a0b77e993..b9ee472a618 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js @@ -1,7 +1,7 @@ /** * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts **/ export const description = ` -copyToTexture with HTMLVideoElement (and other video-type sources?). +copyToTexture with HTMLVideoElement and VideoFrame. - videos with various encodings/formats (webm vp8, webm vp9, ogg theora, mp4), color spaces (bt.601, bt.709, bt.2020) @@ -11,6 +11,7 @@ import { GPUTest, TextureTestMixin } from '../../gpu_test.js'; import { startPlayingAndWaitForVideo, getVideoElement, + getVideoFrameFromVideoElement, kVideoExpectations, } from '../../web_platform/util.js'; @@ -18,10 +19,10 @@ const kFormat = 'rgba8unorm'; export const g = makeTestGroup(TextureTestMixin(GPUTest)); -g.test('copy_from_video_element') +g.test('copy_from_video') .desc( ` -Test HTMLVideoElement can be copied to WebGPU texture correctly. +Test HTMLVideoElement and VideoFrame can be copied to WebGPU texture correctly. It creates HTMLVideoElement with videos under Resource folder. @@ -42,16 +43,30 @@ It creates HTMLVideoElement with videos under Resource folder. .params(u => u // .combineWithParams(kVideoExpectations) + .combine('sourceType', ['VideoElement', 'VideoFrame']) .combine('srcDoFlipYDuringCopy', [true, false]) ) .fn(async t => { - const { videoName, srcDoFlipYDuringCopy } = t.params; + const { videoName, sourceType, srcDoFlipYDuringCopy } = t.params; + + if (sourceType === 'VideoFrame' && typeof VideoFrame === 'undefined') { + t.skip('WebCodec is not supported'); + } const videoElement = getVideoElement(t, videoName); - await startPlayingAndWaitForVideo(videoElement, () => { - const width = videoElement.videoWidth; - const height = videoElement.videoHeight; + await startPlayingAndWaitForVideo(videoElement, async () => { + let source, width, height; + if (sourceType === 'VideoFrame') { + source = await getVideoFrameFromVideoElement(t, videoElement); + width = source.codedWidth; + height = source.codedHeight; + } else { + source = videoElement; + width = source.videoWidth; + height = source.videoHeight; + } + const dstTexture = t.device.createTexture({ format: kFormat, size: { width, height, depthOrArrayLayers: 1 }, @@ -60,7 +75,11 @@ It creates HTMLVideoElement with videos under Resource folder. }); t.queue.copyExternalImageToTexture( - { source: videoElement, origin: { x: 0, y: 0 }, flipY: srcDoFlipYDuringCopy }, + { + source, + origin: { x: 0, y: 0 }, + flipY: srcDoFlipYDuringCopy, + }, { texture: dstTexture, origin: { x: 0, y: 0 }, @@ -93,5 +112,9 @@ It creates HTMLVideoElement with videos under Resource folder. { coord: { x: width * 0.75, y: height * 0.75 }, exp: t.params._greenExpectation }, ]); } + + if (source instanceof VideoFrame) { + source.close(); + } }); }); diff --git a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/util.js b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/util.js index 25e524f9a73..6a6856ad12b 100644 --- a/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/util.js +++ b/tests/wpt/webgpu/tests/webgpu/webgpu/web_platform/util.js @@ -127,7 +127,7 @@ export function startPlayingAndWaitForVideo(video, callback) { await callback(); resolve(); } catch (ex) { - reject(); + reject(ex); } })(); if (video.error) {