From dfcc7b57143c75a348792dde99f066c688e67968 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Mon, 7 Jun 2021 20:01:54 +0000 Subject: [PATCH] writer/spirv: Fix emission of select() The argument order between WGSL and SPIR-V is different (condition is first in SPIR-V, last in WGSL) Fixed: tint:560 Change-Id: I56c659c441292e05f71a24d96dbc9f93f25b71f0 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/53620 Kokoro: Kokoro Reviewed-by: James Price --- src/writer/spirv/builder.cc | 19 +++++- src/writer/spirv/builder_intrinsic_test.cc | 4 +- .../gen/select/00b848.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/01e2cd.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/1e960b.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/266aff.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/28a27e.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/416e14.wgsl.expected.spvasm | 68 +++++++++++-------- .../gen/select/99f883.wgsl.expected.spvasm | 64 +++++++++-------- .../gen/select/a2860e.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/bb8aae.wgsl.expected.spvasm | 64 +++++++++-------- .../gen/select/c4a4ef.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/ebfea2.wgsl.expected.spvasm | 62 +++++++++-------- .../gen/select/ed8a15.wgsl.expected.spvasm | 64 +++++++++-------- 14 files changed, 443 insertions(+), 336 deletions(-) diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc index 4362d9c52f..c42a993f6d 100644 --- a/src/writer/spirv/builder.cc +++ b/src/writer/spirv/builder.cc @@ -2349,9 +2349,22 @@ uint32_t Builder::GenerateIntrinsic(ast::CallExpression* call, case IntrinsicType::kReverseBits: op = spv::Op::OpBitReverse; break; - case IntrinsicType::kSelect: - op = spv::Op::OpSelect; - break; + case IntrinsicType::kSelect: { + // Note: Argument order is different in WGSL and SPIR-V + auto cond_id = get_param_as_value_id(2); + auto true_id = get_param_as_value_id(0); + auto false_id = get_param_as_value_id(1); + if (!cond_id || !true_id || !false_id) { + return 0; + } + if (!push_function_inst( + spv::Op::OpSelect, + {Operand::Int(result_type_id), result, Operand::Int(cond_id), + Operand::Int(true_id), Operand::Int(false_id)})) { + return 0; + } + return result_id; + } default: { auto set_id = GetGLSLstd450Import(); auto inst_id = intrinsic_to_glsl_method(intrinsic); diff --git a/src/writer/spirv/builder_intrinsic_test.cc b/src/writer/spirv/builder_intrinsic_test.cc index ebc1de3531..ecb4fd5a25 100644 --- a/src/writer/spirv/builder_intrinsic_test.cc +++ b/src/writer/spirv/builder_intrinsic_test.cc @@ -509,9 +509,9 @@ TEST_F(IntrinsicBuilderTest, Call_Select) { %6 = OpVariable %7 Private %10 )"); EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), - R"(%12 = OpLoad %3 %1 + R"(%12 = OpLoad %8 %6 %13 = OpLoad %3 %1 -%14 = OpLoad %8 %6 +%14 = OpLoad %3 %1 %11 = OpSelect %3 %12 %13 %14 )"); } diff --git a/test/intrinsics/gen/select/00b848.wgsl.expected.spvasm b/test/intrinsics/gen/select/00b848.wgsl.expected.spvasm index 032991f950..f1f6047e5b 100644 --- a/test/intrinsics/gen/select/00b848.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/00b848.wgsl.expected.spvasm @@ -1,64 +1,72 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 37 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_00b848 "select_00b848" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %int = OpTypeInt 32 1 %v2int = OpTypeVector %int 2 - %12 = OpConstantNull %v2int %bool = OpTypeBool %v2bool = OpTypeVector %bool 2 - %15 = OpConstantNull %v2bool + %18 = OpConstantNull %v2bool + %19 = OpConstantNull %v2int %_ptr_Function_v2int = OpTypePointer Function %v2int + %22 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_00b848 = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v2int Function %12 - %9 = OpSelect %v2int %12 %12 %15 - OpStore %res %9 +%select_00b848 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2int Function %19 + %13 = OpSelect %v2int %18 %19 %19 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %19 = OpLabel +%tint_symbol_2 = OpFunction %void None %22 +%tint_symbol = OpFunctionParameter %v4float + %25 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %27 = OpLabel OpStore %tint_pointsize %float_1 - %21 = OpFunctionCall %void %select_00b848 + %29 = OpFunctionCall %void %select_00b848 + %30 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %23 = OpLabel - %24 = OpFunctionCall %void %select_00b848 +%fragment_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_00b848 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %26 = OpLabel - %27 = OpFunctionCall %void %select_00b848 +%compute_main = OpFunction %void None %9 + %35 = OpLabel + %36 = OpFunctionCall %void %select_00b848 OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v2int %12 %12 %15 - diff --git a/test/intrinsics/gen/select/01e2cd.wgsl.expected.spvasm b/test/intrinsics/gen/select/01e2cd.wgsl.expected.spvasm index f0402bc57e..9ebcbef95a 100644 --- a/test/intrinsics/gen/select/01e2cd.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/01e2cd.wgsl.expected.spvasm @@ -1,64 +1,72 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 37 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_01e2cd "select_01e2cd" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %int = OpTypeInt 32 1 %v3int = OpTypeVector %int 3 - %12 = OpConstantNull %v3int %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 - %15 = OpConstantNull %v3bool + %18 = OpConstantNull %v3bool + %19 = OpConstantNull %v3int %_ptr_Function_v3int = OpTypePointer Function %v3int + %22 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_01e2cd = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v3int Function %12 - %9 = OpSelect %v3int %12 %12 %15 - OpStore %res %9 +%select_01e2cd = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3int Function %19 + %13 = OpSelect %v3int %18 %19 %19 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %19 = OpLabel +%tint_symbol_2 = OpFunction %void None %22 +%tint_symbol = OpFunctionParameter %v4float + %25 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %27 = OpLabel OpStore %tint_pointsize %float_1 - %21 = OpFunctionCall %void %select_01e2cd + %29 = OpFunctionCall %void %select_01e2cd + %30 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %23 = OpLabel - %24 = OpFunctionCall %void %select_01e2cd +%fragment_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_01e2cd OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %26 = OpLabel - %27 = OpFunctionCall %void %select_01e2cd +%compute_main = OpFunction %void None %9 + %35 = OpLabel + %36 = OpFunctionCall %void %select_01e2cd OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v3int %12 %12 %15 - diff --git a/test/intrinsics/gen/select/1e960b.wgsl.expected.spvasm b/test/intrinsics/gen/select/1e960b.wgsl.expected.spvasm index 2f41bf0dcc..9a8cc2b38a 100644 --- a/test/intrinsics/gen/select/1e960b.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/1e960b.wgsl.expected.spvasm @@ -1,64 +1,72 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 37 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_1e960b "select_1e960b" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %uint = OpTypeInt 32 0 %v2uint = OpTypeVector %uint 2 - %12 = OpConstantNull %v2uint %bool = OpTypeBool %v2bool = OpTypeVector %bool 2 - %15 = OpConstantNull %v2bool + %18 = OpConstantNull %v2bool + %19 = OpConstantNull %v2uint %_ptr_Function_v2uint = OpTypePointer Function %v2uint + %22 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_1e960b = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v2uint Function %12 - %9 = OpSelect %v2uint %12 %12 %15 - OpStore %res %9 +%select_1e960b = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2uint Function %19 + %13 = OpSelect %v2uint %18 %19 %19 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %19 = OpLabel +%tint_symbol_2 = OpFunction %void None %22 +%tint_symbol = OpFunctionParameter %v4float + %25 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %27 = OpLabel OpStore %tint_pointsize %float_1 - %21 = OpFunctionCall %void %select_1e960b + %29 = OpFunctionCall %void %select_1e960b + %30 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %23 = OpLabel - %24 = OpFunctionCall %void %select_1e960b +%fragment_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_1e960b OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %26 = OpLabel - %27 = OpFunctionCall %void %select_1e960b +%compute_main = OpFunction %void None %9 + %35 = OpLabel + %36 = OpFunctionCall %void %select_1e960b OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v2uint %12 %12 %15 - diff --git a/test/intrinsics/gen/select/266aff.wgsl.expected.spvasm b/test/intrinsics/gen/select/266aff.wgsl.expected.spvasm index d68b98f036..699b1d6f5d 100644 --- a/test/intrinsics/gen/select/266aff.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/266aff.wgsl.expected.spvasm @@ -1,63 +1,71 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 27 +; Bound: 36 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_266aff "select_266aff" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %v2float = OpTypeVector %float 2 - %11 = OpConstantNull %v2float %bool = OpTypeBool %v2bool = OpTypeVector %bool 2 - %14 = OpConstantNull %v2bool + %17 = OpConstantNull %v2bool + %18 = OpConstantNull %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float + %21 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_266aff = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v2float Function %11 - %9 = OpSelect %v2float %11 %11 %14 - OpStore %res %9 +%select_266aff = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2float Function %18 + %13 = OpSelect %v2float %17 %18 %18 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %18 = OpLabel +%tint_symbol_2 = OpFunction %void None %21 +%tint_symbol = OpFunctionParameter %v4float + %24 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %26 = OpLabel OpStore %tint_pointsize %float_1 - %20 = OpFunctionCall %void %select_266aff + %28 = OpFunctionCall %void %select_266aff + %29 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %22 = OpLabel - %23 = OpFunctionCall %void %select_266aff +%fragment_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %select_266aff OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %25 = OpLabel - %26 = OpFunctionCall %void %select_266aff +%compute_main = OpFunction %void None %9 + %34 = OpLabel + %35 = OpFunctionCall %void %select_266aff OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v2float %11 %11 %14 - diff --git a/test/intrinsics/gen/select/28a27e.wgsl.expected.spvasm b/test/intrinsics/gen/select/28a27e.wgsl.expected.spvasm index ccbff5af31..5201a4788f 100644 --- a/test/intrinsics/gen/select/28a27e.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/28a27e.wgsl.expected.spvasm @@ -1,64 +1,72 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 37 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_28a27e "select_28a27e" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %uint = OpTypeInt 32 0 %v3uint = OpTypeVector %uint 3 - %12 = OpConstantNull %v3uint %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 - %15 = OpConstantNull %v3bool + %18 = OpConstantNull %v3bool + %19 = OpConstantNull %v3uint %_ptr_Function_v3uint = OpTypePointer Function %v3uint + %22 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_28a27e = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v3uint Function %12 - %9 = OpSelect %v3uint %12 %12 %15 - OpStore %res %9 +%select_28a27e = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3uint Function %19 + %13 = OpSelect %v3uint %18 %19 %19 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %19 = OpLabel +%tint_symbol_2 = OpFunction %void None %22 +%tint_symbol = OpFunctionParameter %v4float + %25 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %27 = OpLabel OpStore %tint_pointsize %float_1 - %21 = OpFunctionCall %void %select_28a27e + %29 = OpFunctionCall %void %select_28a27e + %30 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %23 = OpLabel - %24 = OpFunctionCall %void %select_28a27e +%fragment_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_28a27e OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %26 = OpLabel - %27 = OpFunctionCall %void %select_28a27e +%compute_main = OpFunction %void None %9 + %35 = OpLabel + %36 = OpFunctionCall %void %select_28a27e OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v3uint %12 %12 %15 - diff --git a/test/intrinsics/gen/select/416e14.wgsl.expected.spvasm b/test/intrinsics/gen/select/416e14.wgsl.expected.spvasm index 44079c1d62..e4ca7f80f7 100644 --- a/test/intrinsics/gen/select/416e14.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/416e14.wgsl.expected.spvasm @@ -1,60 +1,68 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 24 +; Bound: 33 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_416e14 "select_416e14" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void - %float_1 = OpConstant %float 1 + %9 = OpTypeFunction %void %bool = OpTypeBool - %12 = OpConstantNull %bool + %15 = OpConstantNull %bool + %float_1 = OpConstant %float 1 %_ptr_Function_float = OpTypePointer Function %float -%select_416e14 = OpFunction %void None %5 - %8 = OpLabel + %19 = OpTypeFunction %void %v4float +%select_416e14 = OpFunction %void None %9 + %12 = OpLabel %res = OpVariable %_ptr_Function_float Function %4 - %9 = OpSelect %float %float_1 %float_1 %12 - OpStore %res %9 + %13 = OpSelect %float %15 %float_1 %float_1 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %16 = OpLabel - OpStore %tint_pointsize %float_1 - %17 = OpFunctionCall %void %select_416e14 - OpReturn - OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %19 = OpLabel - %20 = OpFunctionCall %void %select_416e14 - OpReturn - OpFunctionEnd -%compute_main = OpFunction %void None %5 +%tint_symbol_2 = OpFunction %void None %19 +%tint_symbol = OpFunctionParameter %v4float %22 = OpLabel - %23 = OpFunctionCall %void %select_416e14 + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + OpStore %tint_pointsize %float_1 + %25 = OpFunctionCall %void %select_416e14 + %26 = OpFunctionCall %void %tint_symbol_2 %8 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %select_416e14 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %select_416e14 OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %float %float_1 %float_1 %12 - diff --git a/test/intrinsics/gen/select/99f883.wgsl.expected.spvasm b/test/intrinsics/gen/select/99f883.wgsl.expected.spvasm index 9452dff9c5..489f6ddacd 100644 --- a/test/intrinsics/gen/select/99f883.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/99f883.wgsl.expected.spvasm @@ -1,63 +1,71 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 27 +; Bound: 36 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_99f883 "select_99f883" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %uint = OpTypeInt 32 0 - %uint_1 = OpConstant %uint 1 %bool = OpTypeBool - %13 = OpConstantNull %bool + %16 = OpConstantNull %bool + %uint_1 = OpConstant %uint 1 %_ptr_Function_uint = OpTypePointer Function %uint - %16 = OpConstantNull %uint + %20 = OpConstantNull %uint + %21 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_99f883 = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_uint Function %16 - %9 = OpSelect %uint %uint_1 %uint_1 %13 - OpStore %res %9 +%select_99f883 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_uint Function %20 + %13 = OpSelect %uint %16 %uint_1 %uint_1 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %18 = OpLabel +%tint_symbol_2 = OpFunction %void None %21 +%tint_symbol = OpFunctionParameter %v4float + %24 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %26 = OpLabel OpStore %tint_pointsize %float_1 - %20 = OpFunctionCall %void %select_99f883 + %28 = OpFunctionCall %void %select_99f883 + %29 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %22 = OpLabel - %23 = OpFunctionCall %void %select_99f883 +%fragment_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %select_99f883 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %25 = OpLabel - %26 = OpFunctionCall %void %select_99f883 +%compute_main = OpFunction %void None %9 + %34 = OpLabel + %35 = OpFunctionCall %void %select_99f883 OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %uint %uint_1 %uint_1 %13 - diff --git a/test/intrinsics/gen/select/a2860e.wgsl.expected.spvasm b/test/intrinsics/gen/select/a2860e.wgsl.expected.spvasm index cdc8be8714..2d5f71091d 100644 --- a/test/intrinsics/gen/select/a2860e.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/a2860e.wgsl.expected.spvasm @@ -1,64 +1,72 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 37 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_a2860e "select_a2860e" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %int = OpTypeInt 32 1 %v4int = OpTypeVector %int 4 - %12 = OpConstantNull %v4int %bool = OpTypeBool %v4bool = OpTypeVector %bool 4 - %15 = OpConstantNull %v4bool + %18 = OpConstantNull %v4bool + %19 = OpConstantNull %v4int %_ptr_Function_v4int = OpTypePointer Function %v4int + %22 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_a2860e = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v4int Function %12 - %9 = OpSelect %v4int %12 %12 %15 - OpStore %res %9 +%select_a2860e = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4int Function %19 + %13 = OpSelect %v4int %18 %19 %19 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %19 = OpLabel +%tint_symbol_2 = OpFunction %void None %22 +%tint_symbol = OpFunctionParameter %v4float + %25 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %27 = OpLabel OpStore %tint_pointsize %float_1 - %21 = OpFunctionCall %void %select_a2860e + %29 = OpFunctionCall %void %select_a2860e + %30 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %23 = OpLabel - %24 = OpFunctionCall %void %select_a2860e +%fragment_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_a2860e OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %26 = OpLabel - %27 = OpFunctionCall %void %select_a2860e +%compute_main = OpFunction %void None %9 + %35 = OpLabel + %36 = OpFunctionCall %void %select_a2860e OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v4int %12 %12 %15 - diff --git a/test/intrinsics/gen/select/bb8aae.wgsl.expected.spvasm b/test/intrinsics/gen/select/bb8aae.wgsl.expected.spvasm index 6e2774dfb9..8f9687d588 100644 --- a/test/intrinsics/gen/select/bb8aae.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/bb8aae.wgsl.expected.spvasm @@ -1,63 +1,69 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 27 +; Bound: 34 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_bb8aae "select_bb8aae" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 - %void = OpTypeVoid - %5 = OpTypeFunction %void %v4float = OpTypeVector %float 4 - %11 = OpConstantNull %v4float +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void %bool = OpTypeBool %v4bool = OpTypeVector %bool 4 - %14 = OpConstantNull %v4bool + %16 = OpConstantNull %v4bool %_ptr_Function_v4float = OpTypePointer Function %v4float + %19 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_bb8aae = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v4float Function %11 - %9 = OpSelect %v4float %11 %11 %14 - OpStore %res %9 +%select_bb8aae = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %8 + %13 = OpSelect %v4float %16 %8 %8 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %18 = OpLabel - OpStore %tint_pointsize %float_1 - %20 = OpFunctionCall %void %select_bb8aae - OpReturn - OpFunctionEnd -%fragment_main = OpFunction %void None %5 +%tint_symbol_2 = OpFunction %void None %19 +%tint_symbol = OpFunctionParameter %v4float %22 = OpLabel - %23 = OpFunctionCall %void %select_bb8aae + OpStore %tint_symbol_1 %tint_symbol OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %25 = OpLabel +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + OpStore %tint_pointsize %float_1 %26 = OpFunctionCall %void %select_bb8aae + %27 = OpFunctionCall %void %tint_symbol_2 %8 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %29 = OpLabel + %30 = OpFunctionCall %void %select_bb8aae + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_bb8aae OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v4float %11 %11 %14 - diff --git a/test/intrinsics/gen/select/c4a4ef.wgsl.expected.spvasm b/test/intrinsics/gen/select/c4a4ef.wgsl.expected.spvasm index 6c83621d3d..34a5345116 100644 --- a/test/intrinsics/gen/select/c4a4ef.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/c4a4ef.wgsl.expected.spvasm @@ -1,64 +1,72 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 37 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_c4a4ef "select_c4a4ef" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %uint = OpTypeInt 32 0 %v4uint = OpTypeVector %uint 4 - %12 = OpConstantNull %v4uint %bool = OpTypeBool %v4bool = OpTypeVector %bool 4 - %15 = OpConstantNull %v4bool + %18 = OpConstantNull %v4bool + %19 = OpConstantNull %v4uint %_ptr_Function_v4uint = OpTypePointer Function %v4uint + %22 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_c4a4ef = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v4uint Function %12 - %9 = OpSelect %v4uint %12 %12 %15 - OpStore %res %9 +%select_c4a4ef = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4uint Function %19 + %13 = OpSelect %v4uint %18 %19 %19 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %19 = OpLabel +%tint_symbol_2 = OpFunction %void None %22 +%tint_symbol = OpFunctionParameter %v4float + %25 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %27 = OpLabel OpStore %tint_pointsize %float_1 - %21 = OpFunctionCall %void %select_c4a4ef + %29 = OpFunctionCall %void %select_c4a4ef + %30 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %23 = OpLabel - %24 = OpFunctionCall %void %select_c4a4ef +%fragment_main = OpFunction %void None %9 + %32 = OpLabel + %33 = OpFunctionCall %void %select_c4a4ef OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %26 = OpLabel - %27 = OpFunctionCall %void %select_c4a4ef +%compute_main = OpFunction %void None %9 + %35 = OpLabel + %36 = OpFunctionCall %void %select_c4a4ef OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v4uint %12 %12 %15 - diff --git a/test/intrinsics/gen/select/ebfea2.wgsl.expected.spvasm b/test/intrinsics/gen/select/ebfea2.wgsl.expected.spvasm index 2f1df033d2..d531e0f343 100644 --- a/test/intrinsics/gen/select/ebfea2.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/ebfea2.wgsl.expected.spvasm @@ -1,63 +1,71 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 27 +; Bound: 36 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_ebfea2 "select_ebfea2" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %v3float = OpTypeVector %float 3 - %11 = OpConstantNull %v3float %bool = OpTypeBool %v3bool = OpTypeVector %bool 3 - %14 = OpConstantNull %v3bool + %17 = OpConstantNull %v3bool + %18 = OpConstantNull %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float + %21 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_ebfea2 = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_v3float Function %11 - %9 = OpSelect %v3float %11 %11 %14 - OpStore %res %9 +%select_ebfea2 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3float Function %18 + %13 = OpSelect %v3float %17 %18 %18 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %18 = OpLabel +%tint_symbol_2 = OpFunction %void None %21 +%tint_symbol = OpFunctionParameter %v4float + %24 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %26 = OpLabel OpStore %tint_pointsize %float_1 - %20 = OpFunctionCall %void %select_ebfea2 + %28 = OpFunctionCall %void %select_ebfea2 + %29 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %22 = OpLabel - %23 = OpFunctionCall %void %select_ebfea2 +%fragment_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %select_ebfea2 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %25 = OpLabel - %26 = OpFunctionCall %void %select_ebfea2 +%compute_main = OpFunction %void None %9 + %34 = OpLabel + %35 = OpFunctionCall %void %select_ebfea2 OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %v3float %11 %11 %14 - diff --git a/test/intrinsics/gen/select/ed8a15.wgsl.expected.spvasm b/test/intrinsics/gen/select/ed8a15.wgsl.expected.spvasm index 23dfca35bb..5d27fc347a 100644 --- a/test/intrinsics/gen/select/ed8a15.wgsl.expected.spvasm +++ b/test/intrinsics/gen/select/ed8a15.wgsl.expected.spvasm @@ -1,63 +1,71 @@ -SKIP: FAILED - ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 27 +; Bound: 36 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 - OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize + OpEntryPoint Vertex %vertex_main "vertex_main" %tint_pointsize %tint_symbol_1 OpEntryPoint Fragment %fragment_main "fragment_main" OpEntryPoint GLCompute %compute_main "compute_main" OpExecutionMode %fragment_main OriginUpperLeft OpExecutionMode %compute_main LocalSize 1 1 1 OpName %tint_pointsize "tint_pointsize" + OpName %tint_symbol_1 "tint_symbol_1" OpName %select_ed8a15 "select_ed8a15" OpName %res "res" + OpName %tint_symbol_2 "tint_symbol_2" + OpName %tint_symbol "tint_symbol" OpName %vertex_main "vertex_main" OpName %fragment_main "fragment_main" OpName %compute_main "compute_main" OpDecorate %tint_pointsize BuiltIn PointSize + OpDecorate %tint_symbol_1 BuiltIn Position %float = OpTypeFloat 32 %_ptr_Output_float = OpTypePointer Output %float %4 = OpConstantNull %float %tint_pointsize = OpVariable %_ptr_Output_float Output %4 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %8 = OpConstantNull %v4float +%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8 %void = OpTypeVoid - %5 = OpTypeFunction %void + %9 = OpTypeFunction %void %int = OpTypeInt 32 1 - %int_1 = OpConstant %int 1 %bool = OpTypeBool - %13 = OpConstantNull %bool + %16 = OpConstantNull %bool + %int_1 = OpConstant %int 1 %_ptr_Function_int = OpTypePointer Function %int - %16 = OpConstantNull %int + %20 = OpConstantNull %int + %21 = OpTypeFunction %void %v4float %float_1 = OpConstant %float 1 -%select_ed8a15 = OpFunction %void None %5 - %8 = OpLabel - %res = OpVariable %_ptr_Function_int Function %16 - %9 = OpSelect %int %int_1 %int_1 %13 - OpStore %res %9 +%select_ed8a15 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_int Function %20 + %13 = OpSelect %int %16 %int_1 %int_1 + OpStore %res %13 OpReturn OpFunctionEnd -%vertex_main = OpFunction %void None %5 - %18 = OpLabel +%tint_symbol_2 = OpFunction %void None %21 +%tint_symbol = OpFunctionParameter %v4float + %24 = OpLabel + OpStore %tint_symbol_1 %tint_symbol + OpReturn + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %26 = OpLabel OpStore %tint_pointsize %float_1 - %20 = OpFunctionCall %void %select_ed8a15 + %28 = OpFunctionCall %void %select_ed8a15 + %29 = OpFunctionCall %void %tint_symbol_2 %8 OpReturn OpFunctionEnd -%fragment_main = OpFunction %void None %5 - %22 = OpLabel - %23 = OpFunctionCall %void %select_ed8a15 +%fragment_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %select_ed8a15 OpReturn OpFunctionEnd -%compute_main = OpFunction %void None %5 - %25 = OpLabel - %26 = OpFunctionCall %void %select_ed8a15 +%compute_main = OpFunction %void None %9 + %34 = OpLabel + %35 = OpFunctionCall %void %select_ed8a15 OpReturn OpFunctionEnd - - -Validation Failure: -1:1: Expected bool scalar or vector type as condition: Select - %9 = OpSelect %int %int_1 %int_1 %13 -